【发布时间】:2013-02-13 18:59:55
【问题描述】:
在 IIS 中托管的 WCF 服务中,我正在尝试设置多个端点。一种用于 SOAP,一种用于 SOAP12。根据MSDN documentation,我编辑了Web.config 喜欢:
<services>
<service name="MyNamespace.MyClass">
<endpoint address="" binding="basicHttpBinding" contract="IContract" />
<endpoint address="Endpoint2" binding="wsHttpBinding" contract="IContract" />
</service>
</services>
这似乎没有任何效果。网址上没有答案:
http://localhost:51454/MyClass.svc/Endpoint2
如果我将 IContract 更改为 IContract2,则会收到错误消息:
The service '/MyClass.svc' cannot be activated due to an exception during
compilation.
所以我正在编辑的Web.config 是正在使用的那个。
将默认地址的绑定从 basicHttpBinding 更改为 wsHttpBinding 没有任何效果。 WSDL 保持不变。
WSDL 包含这一位,这似乎表明它正在使用生成的绑定运行:
<wsdl:service name="TapasSim">
<wsdl:port name="BasicHttpBinding_IContract"
binding="i0:BasicHttpBinding_IContract">
<soap:address location="http://localhost:51454/MyClass.svc"/>
</wsdl:port>
</wsdl:service>
为什么 WCF 服务不使用来自Web.config 的配置?
为什么 WCF 不使用 SOAP12 绑定监听 /Endpoint2?
为什么默认端点没有从basicHttpBinding 更改为wsHttpBinding?
【问题讨论】:
-
你是如何生成 WSDL 的,使用 svcutil 还是使用 VS。
-
@Dhawalk:当您访问
MyClass.svc?wsdl时,WCF 会生成 WSDL -
你可以使用 svcutil 来生成 wsdl 吗?我使用 VS 创建服务引用,并且能够从客户端应用程序访问两个端点
-
好的......没关系,我没有在下面看到你的答案:)
-
@Dhawalk:是的,愚蠢的错字。感谢您的关注! :)
标签: c# wcf wcf-binding