基本上,我正在尝试利用WCF通道来保持粘性(不要通过FIN或RST标志终止)TCP连接。
通过在C#中使用ServiePoint类,我可以将ConnectionLeaseTimeout属性与MaxIdleTime一起使用,以确保客户端不会终止连接。
但是,我注意到每次连接空闲约2分钟后,服务器都会发送一个RST标志来终止它。我试图通过继续从客户端发送KeepAlive数据包来修复它,它没有帮助。我的感觉是,无论我的keepAlive数据包如何,都会发送Reset标志。有什么想法吗?谢谢。代码如下:
private void SetConnectionIdleTimeSticky(string endpoint)
{
var sp = ServicePointManager.FindServicePoint(new Uri(endpoint));
sp.SetTcpKeepAlive(true, 10000, 10000);
sp.MaxIdleTime = 600000;
}