C# 如何修复WCF“;net.tcp不支持请求的升级";错误?

C# 如何修复WCF“;net.tcp不支持请求的升级";错误?,c#,.net,wcf,exception-handling,net.tcp,C#,.net,Wcf,Exception Handling,Net.tcp,我在本地IIS7上运行了一个asp.net mvc 3应用程序。这引用了一个非常有效的WCF服务 我最近添加了对位于同一位置的另一个服务的引用,在调用方法时出现以下错误: “net”不支持请求的升级。tcp://webdev02:15001/CommonService/Service.svc/mex'. 这可能 可能是由于绑定不匹配(例如,在 客户端(而不是服务器上) 服务处的web.config在第一个工作服务和第二个非工作服务的绑定之间具有相同的设置。我的客户也是这样 我还使用windows

我在本地IIS7上运行了一个asp.net mvc 3应用程序。这引用了一个非常有效的WCF服务

我最近添加了对位于同一位置的另一个服务的引用,在调用方法时出现以下错误:

“net”不支持请求的升级。tcp://webdev02:15001/CommonService/Service.svc/mex'. 这可能 可能是由于绑定不匹配(例如,在 客户端(而不是服务器上)

服务处的web.config在第一个工作服务和第二个非工作服务的绑定之间具有相同的设置。我的客户也是这样

我还使用windows凭据进行连接,如下所示:

svc.ClientCredentials.Windows.ClientCredential.UserName = "myname";
svc.ClientCredentials.Windows.ClientCredential.Password = "mypass";

此外,我还可以使用WcfTestClient成功调用这两个服务。有没有想过为什么一个人不会为我工作?提前感谢您的帮助。

mex是元数据,通常不需要凭据即可查看。首先,我将查看元数据(mex)交换的服务端点设置

我没有在net.tcp上执行WCF,但下面是我的HTTP WCF应用程序的一个示例:

   <endpoint
      address=""
      binding="wsHttpBinding"
      bindingConfiguration="RequestUserName"
      contract="MyService.IContract"/> 
   <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
  </service>

我可以在绑定设置为mexHttpBinding的情况下查看没有凭据的wsdl,而通过将wsHttpBinding设置为:

 <wsHttpBinding>
    <binding name="RequestUserName">
        <security mode="Message">
        <message clientCredentialType="UserName" />
        <transport clientCredentialType="None" proxyCredentialType="None" />
      </security>
    </binding>
  </wsHttpBinding>


同样,我对net.tcp WCF没有直接的经验,但我相信您在imeadataexchange上的绑定是开始寻找的地方。

因此,一切都按其应有的方式配置。在客户端上的服务实例化期间,当我在端点上设置URL时出现了问题,我在末尾包括了
/mex
,如下所示:

svc.ClientCredentials.Windows.ClientCredential.UserName = "myname";
svc.ClientCredentials.Windows.ClientCredential.Password = "mypass";
net。tcp://webdev02:15001/CommonService/Service.svc/mex

实际上,我的URL应该是:

net。tcp://webdev02:15001/CommonService/Service.svc


现在一切都很好,我关掉了
/mex

谢谢你的帮助。我的绑定很好,这是我为端点设置的URL中的一个错误。详见答案。