我有一个启用了会话的双工 WCF 服务,并且我正在尝试避免客户端上出现故障状态异常。
我发现了围绕这个主题的几个讨论,但我发现的所有内容都建议重新创建客户端代理或通道。Non 专注于启用会话的双工服务。
我对这种方法的问题是服务器中的每个客户端都有一个会话,并且每个客户端只有一个服务代理实例(单例服务代理)。因为它是双工的,所以在客户端有几个对象正在监听该服务实例上的事件(从服务器发送到客户端的消息)。如果服务处于故障状态,则不能再使用。如果我丢弃该实例并创建一个新实例,我会发现很难将所有事件处理程序再次连接到这个新实例。
我是否应该包装服务并且每次对象连接到事件时,将处理程序存储在列表中(以便在重新创建服务时重新连接它)?好像丢了代码,容易泄露内存……
有没有办法只重新启动客户端代理/通道,而不丢弃所有代理实例?(我正在使用 VS 生成的代理)
有任何想法吗?
谢谢,MAB