【发布时间】:2012-08-15 14:04:17
【问题描述】:
所以我正在使用具有可靠 WSHttpBinding 的 Per Session WCF 服务。因为它是每会话,所以我需要处理我在频道上遇到的任何问题,但我对 WCF 的了解还不是很好。
我决定订阅 ClientBase.InnerChannel 的错误事件,认为如果出现问题,它会触发。然而,这似乎只在特定情况下触发。
例如,我连接了网络,然后从网络中拔出服务,并且没有抛出错误,即使我尝试做某事,我也只得到了 EndPointNotFound 异常。
无论如何,我是否可以监视在通道因任何原因变得不可用时触发的事件?我很乐意在我断开连接或发生超时的情况下这样做,但即使这是不可能的(不忙于等待不断检查),我会很高兴在我尝试某事时让我知道的事情。
【问题讨论】:
-
如果传输会话停止,您的代理应该抛出异常,可能是通信异常、超时异常或其他,我不明白您什么时候没有这种行为
-
是的,抛出异常,问题是我不想在一个地方而不是多个地方处理它。嗯,主要是,我想要的是我事先知道连接已经死了,所以一旦我从网络上拔掉插头,我就会在代理上收到一个通道出现故障的事件。我不确定这会起作用,因此问题(想想outlook状态栏中的连接问题)。如果那行不通,我有一个包裹在代理周围的 ClientManager 类,如果我能处理那里的所有事情,我会很高兴。但是所有代理调用都是在这个类之外进行的。
标签: c# wcf web-services .net-4.0 event-handling