我的项目中存在一些严重问题。在交易期间(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>
任何人帮助我!!! ..
答案 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>
为了使绑定无限期保持活动,必须在服务器和客户端上设置上述配置。