2010-11-11 55 views
2

我有一个自定义(通用)代理类,用于连接到我的WCF服务。我希望提供的这一类功能之一是能够从服务故障(即故障通信信道)和关机中“恢复”。为此,我获得对服务通道的引用并订阅ICommunicationObject.Closed和ICommunicationObject.Faulted事件。当这些事件发生时,我开始一个“恢复”过程,基本上每隔几秒就尝试重新建立到服务的连接。假设是,如果服务变得不可用,无论出于何种原因,服务将很快变为可用,并且客户端应用程序可以获取它的位置。使WCF代理对服务关闭作出反应的问题

我有两项服务。服务A需要回调合同,服务B不需要。服务A使用双工信道,服务B不使用。两者都需要会话。服务A隐式创建会话;服务B定义了IsInitiating和IsTerminating操作。这里的(有点混乱)的行为我看到:

服务A

  • 正常关机 - >发生故障的事件引发,可以通过代理服务器来处理,而不是封闭的事件。
  • “硬”关机 - >与上面相同。

服务B

  • 正常关机 - 没有事件被引发。
  • “硬”关机 - 未引发任何事件。

请注意,这两个服务使用相同的代理类。唯一的区别在于它们是如何初始化的。代理A使用双工通道工厂,因此必须创建一个实例上下文,通过实例实现服务A的回调协议。代理B仅使用“常规”渠道工厂。

任何想法?

非常感谢, J.

+0

嗨,是否有类似的问题。你最终获得了这个成功吗? – Klee 2013-02-27 04:49:19

回答

0

将在ICommunicationObject.State属性帮助你在这里?应该回归开放,封闭,错误,以及过渡国家的开放和关闭。也许你可以在你调用任何方法之前检查你的代理