2012-08-15 69 views
0

因此,我正在使用可靠的WSHttpBinding来消费每会话WCF服务。由于每个会话都需要处理任何与频道有关的问题,但我对WCF的了解还不是很好。如何正确监控每会话WCF客户端

我决定订阅ClientBase.InnerChannel的故障事件,认为如果出现问题,会触发此事件。然而,这似乎只在特定情况下才会发生。

例如我连接,然后从网络拔掉服务是打开和故障不会抛出,即使当我试图做一些事情,我只有EndPointNotFound异常。

有无论如何,我可以监控一个事件,随时随地出现任何频道无法使用的事件?如果我断开连接或发生超时,但是即使这种情况不可行(没有忙于等待不断检查),我也会喜欢这样做,我会很高兴能尽快让我知道一些事情。

+0

如果传输会话停止代理应该抛出一个异常,也可能是一个的CommunicationException,一timeoutexception或其他人,我不明白当你没有这种行为 – MaRuf 2012-08-15 20:32:38

+0

是抛出异常,问题是我不想在一个地方处理它,而不是许多。主要的是,我所拍摄的是,我会事先知道这个连接已经死了,所以一旦我从网络上拔掉,我会在代理服务器上看到一个频道发生故障的事件。我不确定这会起作用,因此这个问题(想想Outlook的状态栏中的连接事件)。如果这不起作用,我有一个ClientManager类包装在代理服务器上,如果我能处理所有事情,我会很乐意。但是所有的代理服务电话都是在这个班级之外进行的 – 2012-08-16 10:34:28

回答

0

您可以在Windows Server AppFabric中,让你可以使用很多工具来监控WCF托管WCF服务: http://www.dotnetcurry.com/ShowArticle.aspx?ID=771

+0

我想监视器对我来说不是正确的词,因为这与我所说的无关。我是消费者,而不是服务的主人。 – 2012-08-15 14:14:23

+0

正确监视你可以使用ReliableSession.InactivityTimeout到足够短的时间段,它会在超时时抛出异常 – 2012-08-15 14:20:58

+0

奇怪的是我试图将它降低到10秒,以及receiveTimeout,但它不似乎暂停。就像PerSession服务中内置了一个秘密存活代码,或者它被服务代码覆盖。 – 2012-08-15 14:26:28