WCF服务调用使用basicHttpBinding,但使用netTcpBinding失败
(请阅读评论,因为我有一个补丁)WCF服务调用使用basicHttpBinding,但使用netTcpBinding失败,wcf,nettcpbinding,was,Wcf,Nettcpbinding,Was,(请阅读评论,因为我有一个补丁) 嗨 我已使用.net 4.0创建了一个WCF服务,我正在Windows 7上的IIS 7.5中托管该服务 该服务同时托管在http和net.tcp上 净。tcp://localhost:42/Service/MyService.svc 我已经使用WcfTestClient测试了我的服务,它似乎可以通过basichtp和netTcp正常工作 但是,当我尝试通过ASP.NET网站使用此服务时,我在尝试通过nettcp时收到一个错误 我的客户端端点如下所示 &l
嗨 我已使用.net 4.0创建了一个WCF服务,我正在Windows 7上的IIS 7.5中托管该服务
该服务同时托管在http和net.tcp上
- 净。tcp://localhost:42/Service/MyService.svc
<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();
var factory=新的ChannelFactory(SuppliedEndpointName);
factory.Open();
var proxy=factory.CreateChannel();
var result=proxy.SomeServiceMethod();
如果我通过此方法,basicHttpBinding将非常有效。第二次切换到nettcp时,我立即收到此错误: 异常:套接字连接已中止。这可能是由于处理消息时出错、远程主机超过接收超时或基础网络资源问题造成的。本地套接字超时为“00:01:00” 内部异常:远程主机强制关闭了现有连接 错误代码:10054 请任何人帮帮我,这让我发疯。
我已经明确安装了WCF HTTP激活和非HTTP激活功能。
我已将绑定设置为在不同端口上同时使用HTTP和net.tcp。
我已在IIS中将启用的协议设置为http、net.tcp。
我已禁用防火墙。 我已经为.NET4.0运行了aspnet_regiis-I 救命啊
我终于发现,将安全模式更改为传输模式可以解决问题。
但是,我的服务的it安全模式设置为“无”。
那么,为什么我的客户机只在安全模式下工作
netTcpBinding
默认情况下,签名和加密都具有传输安全性。尝试删除安全性元素(
)
阿尔索
8000以下(当然是1024以下)的端口通常不能安全地用于服务。尝试使用安全端口。通常,经过数小时的故障排除,我在提交此文件几分钟后发现问题。我将WcfTestClient配置复制到我的配置上以找到它。我已经添加到我的服务和客户。但是由于某些原因,客户端端点不会像这样工作。通过将其更改为,问题现在已解决。我的服务仍然具有安全模式“无”。为什么?你看到服务在那个端口监听吗?在NetStation中,这只是在内部运行。我打了几个成功的电话到那个港口。netstat显示我的服务正在该端口上侦听。根据Aliostad的建议,我现在已将端口更改为4000范围谢谢,这正是我的问题。当WcfTestClient在其传输中设置安全模式时,我看到了这一点。