如何解决WCF服务调用与basicHttpBinding一起使用,但与netTcpBinding一起使用失败
|| (请阅读注释,因为我已解决) 你好 我已创建一个WCF服务,该主机将使用.net 4.0在Windows 7的IIS 7.5中托管 该服务同时托管在http和net.tcp上。 net.tcp://本地主机:42 / Service / MyService.svc http:// localhost:43 / Service / MyService.svc 我已经使用WcfTestClient测试了我的服务,它似乎可以通过basicHttp和netTcp正常工作。 但是,当我尝试通过ASP.NET网站使用此服务时,尝试通过nettcp时收到错误消息 我的客户端端点如下所示<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name=\"Generic_HttpBinding\" sendTimeout=\"00:01:00\" receiveTimeout=\"00:01:00\" maxBufferPoolSize=\"2000000\" maxReceivedMessageSize=\"2000000000\">
<security mode=\"None\"/>
<readerQuotas maxDepth=\"2000000\" maxStringContentLength=\"2000000\" maxArrayLength=\"2000000\" maxBytesPerRead=\"2000000\" maxNaMetableCharCount=\"2000000\"/>
</binding>
</basicHttpBinding>
<netTcpBinding>
<binding name=\"Generic_Binding\" sendTimeout=\"00:01:00\" receiveTimeout=\"00:01:00\" maxBufferPoolSize=\"2000000\" maxReceivedMessageSize=\"2000000000\">
<security mode=\"None\"/>
<readerQuotas maxDepth=\"2000000\" maxStringContentLength=\"2000000\" maxArrayLength=\"2000000\" maxBytesPerRead=\"2000000\" maxNaMetableCharCount=\"2000000\"/>
</binding>
</netTcpBinding>
</bindings>
<client>
<endpoint name=\"EndPointHttp\" address=\"http://localhost:43/Service/MyService.svc\" binding=\"basicHttpBinding\" bindingConfiguration=\"Generic_HttpBinding\" contract=\"NameSpace.Services.Contracts.IService\"></endpoint>
<endpoint name=\"EndPoint\" address=\"net.tcp://localhost:42/Service/MyService.svc\" binding=\"netTcpBinding\" bindingConfiguration=\"Generic_Binding\" contract=\"NameSpace.Services.Contracts.IService\"></endpoint>
</client>
现在,我以完全相同的方式致电服务,只是交换了我的终点名称
var factory = new ChannelFactory<IService>(SuppliedEndpointName);
factory.open();
var proxy = factory.CreateChannel();
var result = proxy.someServiceMethod();
如果我通过此方法,则basicHttpBinding会完美运行。
我第二次交换到nettcp,我立即收到此错误:
例外:套接字连接已中止。这可能是由于处理您的消息时出错,远程主机超出了接收超时或潜在的网络资源问题引起的。本地套接字超时为\ '00:01:00 \'。
内部异常:远程主机强行关闭了现有连接
错误码:10054
请任何人能帮助我,这使我发疯。
我已经确定安装了WCF HTTP激活和NON HTTP激活功能。
我已将绑定设置为不同端口上的HTTP和net.tcp。
我已将启用的协议设置为IIS中的http,net.tcp。
我已禁用防火墙。
我已经为.net 4.0运行aspnet_regiis -i
救命!
我终于发现,将安全模式更改为传输可以解决此问题。
但是我的服务将其安全模式设置为none。
那么,为什么我的客户端只能使用安全模式传输?
解决方法
默认情况下为“ 2”,同时具有签名和加密的传输安全性。尝试删除
security
元素(<security mode=\"None\"/>
)。
也
低于8000(绝对低于1024)的端口通常不安全用于服务。尝试使用安全端口。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。