C# WCF端点配置:第二个端点不';根本不起作用,第一个端点不起作用';似乎不受约束的影响

C# WCF端点配置:第二个端点不';根本不起作用,第一个端点不起作用';似乎不受约束的影响,c#,wcf,wcf-binding,C#,Wcf,Wcf Binding,在IIS中托管的WCF服务中,我尝试设置多个端点。一个用于肥皂,一个用于肥皂12。根据,我编辑了Web.config如下: <services> <service name="MyNamespace.MyClass"> <endpoint address="" binding="basicHttpBinding" contract="IContract" /> <endpoint address="Endpoint2" binding

在IIS中托管的WCF服务中,我尝试设置多个端点。一个用于肥皂,一个用于肥皂12。根据,我编辑了
Web.config
如下:

<services>
  <service name="MyNamespace.MyClass">
    <endpoint address="" binding="basicHttpBinding" contract="IContract" />
    <endpoint address="Endpoint2" binding="wsHttpBinding" contract="IContract" />
  </service>
</services>

如果我将
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

尝试添加端点的基本地址:

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

//端点全方位

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


endpoint address=“/Endpoint2”binding=“wsHttpBinding”contract=“IContract”

MSDN文章是正确的,您的配置中没有任何错误。我使用VS创建了一个WCF客户端,并能够使用

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

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

问题在于服务名称:

<service name="MyNamespace.MyClass">


类名错了。当您输入错误的合同界面时,WCF会抛出一个错误。但是错误的类名会被默默地忽略。这就解释了为什么它会回到默认配置。

添加此选项根本没有效果,据我所知,配置文件位于错误的位置?我不知道IIS的正确位置,但我猜它必须靠近.dll文件。通常当我遇到此问题时,这就是原因。如果我将
IContract
更改为
IContract 2
,服务将显示错误消息。所以我很确定它在正确的位置。公平。很好的测试。我还有最后一个猜测——检查答案。我试过了,没有效果。我已经用一个WDSL代码段更新了这个问题,您是如何使用svcutil还是使用VS.@dhawark:WCF在访问
MyClass.svc?WSDL
时生成WSDL的?您可以使用svcutil生成WSDL吗?我使用VS创建服务引用,并且能够从客户端访问两个端点。。。没关系,我没看到你下面的答案:)@Dhawalk:是的,愚蠢的打字错误。谢谢你看!:)
<service name="MyNamespace.MyClass">