Yua*_*uan 6 wcf duplex callback c#-4.0
我有一个使用net tcp duplex回调的自托管wcf服务
在客户端,我在Channel和ChennelFactory上听故障事件.当频道出现故障时,客户端将重新创建频道并重新订阅.
在服务器端,我通过调用存储回调通道和存储通道的引用,OperationContext.Current.Channel以便我可以监听此通道上的故障和已关闭事件.出现故障时,服务器将删除该订户.
这大部分时间都在工作,直到最近我发现了一个意外的行为:回调通道在服务器上出现故障,但通道在客户端似乎没问题,这导致客户端在服务器已经删除了该用户和客户端时没有重新订阅不会收到任何回调.
我想在双工通信上,如果一端检测到故障,双工通道应该出现故障.
启用可靠会话并且超时很长(2小时)(这可能会导致客户端无法快速感知故障?)
谁能解释为什么会这样?
另一个问题是它为何会出现故障?我连接了40个客户端,但服务器会在随机时间检测到随机客户端出现故障.
我不确定原因。但我认为通道可能会发生故障,导致故障事件永远不会到达客户端或服务器。当客户端突然崩溃时还需要考虑这种情况。
无论如何,在我的项目中,我得出的结论是,依赖故障通道事件不够可靠。因此,我定期通过回调通道对服务器上的所有订阅者执行 ping 操作。如果客户端未在超时限制内回复,则会从订阅者列表中删除。
从客户端,您还可以捕获超时异常并在必要时重新创建通道。