【问题标题】:How do I properly monitor a Per Session WCF client如何正确监控每会话 WCF 客户端
【发布时间】: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


【解决方案1】:

您可以在 windows server appfabric 中托管 WCF 服务,这允许您使用很多工具来监控 wcf: http://www.dotnetcurry.com/ShowArticle.aspx?ID=771

【讨论】:

  • 我猜monitor这个词不适合我使用,因为这与我所说的完全不同。我是消费者,而不是服务的主人。
  • 要正确监控,您可以使用 ReliableSession.InactivityTimeout 到一个足够短的时间段,它会在超时时抛出异常
  • 奇怪的是,我试图将其降低到 10 秒,以及 receiveTimeout,但它似乎根本没有超时。就像 PerSession 服务中内置了一个秘密保活代码,或者它被服务代码覆盖。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 2013-05-27
  • 1970-01-01
  • 2014-04-10
  • 2016-11-28
  • 2017-08-25
相关资源
最近更新 更多