0

在 IIS 中托管的 WCF 服务中,我正在尝试设置多个端点。一种用于 SOAP,一种用于 SOAP12。根据MSDN 文档,我编辑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

如果我更改IContractIContract2,我会收到错误消息:

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 不监听/Endpoint2SOAP12 绑定?
为什么默认端点不会从basicHttpBindingto更改wsHttpBinding

4

3 回答 3

1

尝试为端点添加一个基本地址:

  <service name="namespace.Service">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:51454/myclass.svc"/>
      </baseAddresses>
    </host>

// 端点omnited

或者尝试在地址前添加一个斜杠:

端点地址="/Endpoint2" 绑定="wsHttpBinding" 合同="IContract"

于 2013-02-12T21:04:39.620 回答
1

MSDN文章是正确的,你的配置没有错。我使用 VS 创建了一个 WCF 客户端,并且能够使用成功调用

http://localhost:51454/MyClass.svc/Endpoint2

显然,它不会显示为来自浏览器的有效 url。尝试使用第二个 url 从客户端消费,它应该可以工作

于 2013-02-12T21:38:30.533 回答
0

问题是服务名称:

<service name="MyNamespace.MyClass">

班级名称错误。当你输入错误的合约界面时,WCF 会抛出错误。但是一个错误的类名会被默默地忽略。这就解释了为什么它依赖于默认配置。

于 2013-02-13T10:59:55.277 回答