在IIS中托管的WCF服务中,我正在尝试设置多个端点。一个用于SOAP,一个用于SOAP12。根据{{3}},我编辑了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
?
答案 0 :(得分:1)
尝试为端点添加基地址:
<service name="namespace.Service">
<host>
<baseAddresses>
<add baseAddress="http://localhost:51454/myclass.svc"/>
</baseAddresses>
</host>
//端点omnited
或尝试在地址前添加斜杠:
端点地址=“/ Endpoint2”binding =“wsHttpBinding”contract =“IContract”
答案 1 :(得分:1)
MSDN文章是正确的,您的配置没有任何问题。我使用VS创建了一个WCF客户端,并且能够使用
成功调用http://localhost:51454/MyClass.svc/Endpoint2
显然,它不会显示为来自浏览器的有效网址。尝试使用第二个网址从客户端消费,它应该工作
答案 2 :(得分:0)
问题是服务名称:
<service name="MyNamespace.MyClass">
班级名称错了。当您输入错误的合同界面时,WCF会抛出错误。但是会默默忽略错误的类名。这就解释了为什么它会回到默认配置上。