微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WCF服务调用与basicHttpBinding一起使用,但与netTcpBinding一起使用失败

如何解决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 举报,一经查实,本站将立刻删除。