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