WCF服务保持在线状态(Keep Alive),长时间闲置状态下不断线解决方案
解决方案
1. WCF服务配置为可靠会话,设置reliableSession。
2. 设置binding的receiveTimeout属性。
3. 将inactivityTimeout与receiveTimeout属性的超时时间设置相同的数值。建议改为4或8小时(通常上/下午工作时间小于4小时,改为4最理想),下面是Web.Config和App.Config文件的配置。
<binding name="ISalesModuleService" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647" messageEncoding="Text" receiveTimeout="04:00:00" >
<!--大数据量通信设置-->
<readerQuotas maxDepth="6553600" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="6553600" maxNameTableCharCount="6553600"/>
<!--可靠会话设置-->
<reliableSession ordered="true" inactivityTimeout="04:00:00" enabled="true" />
</binding>
参考文章:
WCF App.Config 配置参数详解:OpenTimeout, CloseTimeout, SendTimeout, ReceiveTimeout
http://www.csframework.com/archive/5/arc-5-20120302-1892.htm
WCF 可靠性会话(reliableSession)中的inactivityTimeout和receiveTimeout 测试报告
http://www.csframework.com/archive/5/arc-5-20120302-1893.htm
基础安全会话在可靠会话完全完成之前出错,可靠会话出错。
http://www.csframework.com/archive/5/arc-5-20120302-1894.htm