我目前正在尝试设置类似于这样的东西:
- 一个服务器端的Windows WCF服务通过TCP侦听来自客户端Windows服务的连接。
- 当收到连接(客户端调用服务上的CheckIn方法)时,服务通过OperationContext.Current.GetCallbackChannel<T>获取一个回调通道。
- 此通道与唯一键存储在一个集合中(具体而言,我将回调接口、通道和键存储在List<ClientConnection>中,其中每个属性都是一项)
- 现在应该能够基于该唯一键将调用传递到该客户端服务
这在开始时工作正常,但经过一段时间后就会停止——我再也无法将调用传递给客户端。我认为这是因为连接已经在内部断开了,我正在尝试使用一个死连接。
考虑到这一点,我有以下问题:
- 我如何告诉WCF我想无限期地(或尽可能长时间地)保持这些TCP连接?
- 我如何从客户端端检查我的与服务器的连接是否仍然有效,以便在连接被破坏时放弃它并再次与服务器进行检查?
我可以想出笨拙的解决方案,但我希望这里有人告诉我正确的方法。