我正在使用NetTCP双工绑定将文档从服务器发送到客户端,如byte []。 当这个byte []非常大(比如10Meg)时,服务器退出
The server did not provide a meaningful reply; this might be caused by a contract mismatch, a premature session shutdown or an internal server error.
例如1 mb的较小消息确实很有效。 这是我web.config中的绑定
<bindings>
<netTcpBinding>
<binding name="InsecureTcp" receiveTimeout="0:10:00" sendTimeout="0:05:00" portSharingEnabled="true" openTimeout="0:0:02" maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647" maxBufferSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647"/>
<security mode="None"/>
<reliableSession enabled="true" ordered="true" inactivityTimeout="0:00:05"/>
</binding>
</netTcpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
更新1 看起来Reliable Session通过怀疑不活动来杀死连接。将文档推送到客户端需要5秒以上,因此通道(我猜)客户端出现故障。 但是:我有5秒的非活动时间,几乎在连接断开时立即得到通知,所以我可以实例化到服务器的新连接。
看起来这两个要求相互争斗