Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WCF服务调用使用basicHttpBinding,但使用netTcpBinding失败_Wcf_Nettcpbinding_Was - Fatal编程技术网

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
我已经使用WcfTestClient测试了我的服务,它似乎可以通过basichtp和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();
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在其传输中设置安全模式时,我看到了这一点。