Web*_*ude 5 wcf was nettcpbinding
(请阅读评论,因为我有一个修复)
嗨,
我创建了一个WCF服务,我在Windows 7上使用.net 4.0在IIS 7.5中托管.
该服务托管在http和net.tcp上.
我已经使用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>
Run Code Online (Sandbox Code Playgroud)
现在我以完全相同的方式调用服务,只需交换我的终点名称
var factory = new ChannelFactory<IService>(SuppliedEndpointName);
factory.Open();
var proxy = factory.CreateChannel();
var result = proxy.SomeServiceMethod();
Run Code Online (Sandbox Code Playgroud)
如果我通过这个方法basicHttpBinding它完美地工作.
第二个i交换到nettcp,我立即收到此错误:
例外:套接字连接已中止.这可能是由于处理消息的错误或远程主机超出接收超时或基础网络资源问题引起的.本地套接字超时为'00:01:00'.
内部异常:远程主机强制关闭现有连接
错误代码:10054
请任何人都可以帮助我,它让我发疯.
我肯定安装了WCF HTTP激活和NON HTTP激活功能.
我已将我的绑定设置为不同端口上的HTTP和net.tcp.
我已将启用的协议设置为IIS中的http,net.tcp.
我已禁用防火墙.我已经为.net 4.0运行了aspnet_regiis -i
救命!
我终于发现将我的安全模式更改为传输可以解决问题.
但是我的服务将其安全模式设置为none.
那么为什么我的客户端只能使用安全模式传输?
netTcpBinding默认情况下,使用签名和加密传输安全性.尝试删除security元素(<security mode="None"/>).
低于8000(并且肯定低于1024)的端口通常不安全用于服务.尝试使用安全端口.