我有一个WCF服务的问题。我有一个控制台应用程序,并且我需要在不使用app.config的情况下使用服务,所以我必须通过代码设置端点等。我确实有一个对svc的服务引用,但我不能使用app.config。下面是我的代码:
BasicHttpBinding binding = new BasicHttpBinding();
EndpointAddress address = new EndpointAddress("http://localhost:8731/WcfServicio/MiServicio");
MiServicioClient svc = new MiServicioClient(binding, address);
object ob = svc.PaisesObtener();
在最后一行,当我执行svc.PaisesObtener()
时,我得到了错误:
Content Type text/xml; charset=utf-8 was not supported by service
http://localhost:8731/WcfServicio/MiServicio. The client and service bindings may be mismatched.
发布于 2012-02-22 04:58:19
不要忘了检查与绑定相关的代码。因此,如果你写道:
BasicHttpBinding binding = new BasicHttpBinding();
确保您的所有app.config
文件都包含
<endpoint address="..."
binding="basicHttpBinding" ...
不是
<endpoint address="..."
binding="wsHttpBinding" ...
大概是这样。
发布于 2013-06-21 02:26:14
我今天看到了这种行为,当
<service name="A.B.C.D" behaviorConfiguration="returnFaults">
<endpoint contract="A.B.C.ID" binding="basicHttpBinding" address=""/>
</service>
从web.config中消失了。service.svc
文件就在那里,并得到了服务。我花了一段时间才意识到问题不在绑定配置本身……
发布于 2015-04-25 02:21:54
我今天在尝试使用VS2010和svcutil创建WCF服务代理时遇到了这个问题。
我所做的一切都是使用basicHttpBinding
(所以wsHttpBinding
没有问题)。
在我的记忆中,MSDN第一次为我提供了解决方案,链接如下How to: Publish Metadata for a Service Using a Configuration File。我需要更改的行在我的服务app.config文件的MEX服务行为元素内的behavior元素内。我把它从
<serviceMetadata httpGetEnabled="true"/>
至
<serviceMetadata httpGetEnabled="true" policyVersion="Policy15"/>
就像魔术一样,错误消失了,我能够创建服务代理了。请注意,有一个对应的MSDN条目用于使用代码而不是配置文件:How to: Publish Metadata for a Service Using Code.。
(当然,Policy15 -我怎么可能忽视这一点?)
还有一个“问题”:我的服务需要公开3个不同的端点,每个端点都支持一个不同的契约。对于我需要构建的每个代理,我必须注释掉其他两个端点,否则svcutil会抱怨它无法解析基本URL地址。
https://stackoverflow.com/questions/8250251
复制相似问题