WCF + net.tcp通信超时问题

时间:2011-04-07 07:09:41

标签: wcf nettcpbinding net-tcp

我的项目中存在一些严重问题。在交易期间(wcf + netTCP) 我得到的例外是。

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>

任何人帮助我!!! ..

3 个答案:

答案 0 :(得分:4)

我不确定为什么你认为它是超时问题?错误消息并不表示超时已经过了。服务器可以抛出异常吗?

我强烈建议您设置WCF tracing。它有点参与但真的值得做,因为我用它解决了许多模糊的WCF问题。

答案 1 :(得分:2)

尝试将此添加到您的netTcpBinding:

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

如果这不起作用,请启用WCF跟踪以找出导致其被杀的内容。

答案 2 :(得分:1)

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

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

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

为了使绑定无限期保持活动,必须在服务器和客户端上设置上述配置。