2011-04-07 33 views
0

我在我的项目中遇到了一些关键问题。在交易期间(wcf + netTCP) 我得到的例外是。WCF + net.tcp通讯超时问题

The communication object, 
System.ServiceModel.Channels.ClientFramingDuplexSessionChannel, 
cannot be used for communication because it is in the Faulted state. 

在WCF服务app.config中添加具有超时规范的绑定标记。但我的交易已经在10分钟内结束。究竟是什么问题..

<bindings> 
     <basicHttpBinding> 
     <binding name="ServiceSoap" closeTimeout="0:01:00" openTimeout="0:01:00" receiveTimeout="10:00:00" sendTimeout="10:00:00" allowCookies="false" 
      bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
      maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" 
      messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
      useDefaultWebProxy="true"> 
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
      maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
      <security mode="None"> 
      <transport clientCredentialType="None" proxyCredentialType="None" 
       realm="" /> 
      <message clientCredentialType="UserName" algorithmSuite="Default" /> 
      </security> 
     </binding> 
     </basicHttpBinding> 
     <netTcpBinding> 
     <binding name="b1" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="infinite" sendTimeout="10:00:00" 

transferMode="Buffered" 

maxBufferPoolSize="524288" 

maxBufferSize="65536" 

maxConnections="10" 

maxReceivedMessageSize="65536"> 
      <security mode="None" /> 
     </binding> 
     </netTcpBinding> 
    </bindings> 

任何一个可以帮助我!!!

回答

4

我不知道为什么你认为它超时的问题?错误消息不建议超时发生。服务器可能会抛出异常吗?

我强烈建议设置WCF tracing。它有点涉及,但真的值得做,因为我已经解决了许多模糊的WCF问题。

+1

您好Jon能解释如何解决这个问题。我需要修复这个问题 – 2011-04-08 04:23:18

+0

没有看到更多的代码,我不知道如何解决这个问题。可能存在序列化问题?您确实需要设置WCF跟踪来进一步调试问题。 – 2011-04-08 07:39:12

1

这不是一个完整的答案,但如果你正在使用的客户端+服务器在同一台机器上,你可以使用一个名为 - 管道绑定,而不是netTcp

绑定部分的配置可能如下所示。

<netNamedPipeBinding> 
    <binding name="infiniteOpenBindingConfig" receiveTimeout="infinite" closeTimeout="infinite"> 
    </binding> 
</netNamedPipeBinding> 

要使绑定无限期地保持活动状态,必须在服务器和客户端上同时设置上述配置。

+0

我正在使用服务器机器的不同地方。可能是我尝试使http而不是netTcp – 2011-04-07 08:42:21

+0

任何人都有这个解决方案 – 2011-04-07 08:45:42

2

尝试添加以下内容到NetTcpBinding的:

<reliableSession inactivityTimeout="infinite" enabled="true" /> 

如果不工作,使WCF跟踪来找出发生了什么杀死它。