WCF捕获异步异常

3
我有一个问题需要咨询。我有一个WCF服务,在其中的一些方法中,我创建了一个对象,该对象建立了与服务器的套接字连接。我在全局变量字典对象中“缓存”这些连接对象,然后进行调用。一旦连接建立,每个连接都有一个计时器,计时器回调会定期向服务器发送保持活动消息。但是,问题来了:如果出现任何原因导致服务器连接中断,就会出现未处理的异常,而且似乎会导致WCF服务停止运行。我希望能够捕获这些定时器相关的异常,并简单地关闭套接字并从缓存中删除连接对象,但我不确定是否有可能。似乎一旦离开使用连接对象的方法,就没有办法捕获异步异常。

你能否提供更多关于异常的信息,以及发送保持连接消息的计时器代码?你是如何连接到服务器的?你能展示一下设置连接的代码吗? - flayn
你的服务中有一些方法似乎是长期存在且长时间运行的,你确定这是一个好的设计吗?而且这是一个单例服务吗? - Stephen Chung
1个回答

0
你需要开发一种连接管理器,它可以持有和监控每个连接的状态。保持活动计时器对于状态跟踪很好,但在使用连接之前仍然需要检查连接是否有效。
无论如何,在使用故障连接时出现异常不应导致WCF服务中未处理的异常,你应该将对连接管理器的访问包装在try-catch子句中。
祝好,
吉拉德

我在想是否可以向管理连接的对象添加事件,以便如果它们在发送时捕获异常,就可以触发事件。 "管理器"对象将具有事件处理程序,当触发事件时,它可以从缓存中删除连接对象。 - Fred Strauss

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接