2014-01-27 18 views
2

我有两个应用程序通过双工WCF连接进行连接。只要连接一致,我就能很好地工作。双工WCF中的重新连接方案

我现在正在检查如何处理重新连接方案,当连接丢失并且必须重新连接时。而且我正在努力理解WCF的工作方式。

据我所知,IChannel是消耗品,但ChannelFactory是昂贵的。所以我创建了一家工厂,然后创建了渠道。每当我检测到通道中的ClosedFaulted事件时,I try就会关闭通道,解除事件处理程序并创建另一个通道。

但这种方法是不工作得非常好,因为有时DuplexChannelFactory<T>.CreateChannel被指责为好,并抛出该异常:

System.ServiceModel.CommunicationObjectAbortedException occurred 
    HResult=-2146233087 
    Message=The communication object, System.ServiceModel.InstanceContext, cannot be used for communication because it has been Aborted. 

这怎么可能,工厂本身被指责这种方式?

在WCF中处理断开/重新连接的正确方法是什么?

回答

0

试图回答这个部分:“这怎么可能,工厂本身被指责这种方式”

如果您是IIS托管您的应用程序,您的应用程序池可能会被回收导致此行为。 您检查日志以确认这是否是根本原因。

+0

这个问题是托管不可知论者。我想知道如何处理重新连接。 – vtortola

+0

感谢您的澄清。我试图回答第1部分。将尽力写出我对如何根据我所做的工作来处理重新连接的想法。 –

1

我不会说这是应该做的事,但正确的方式....

我来处理断开/重新连接的方法是使用一个定时器(客户端)上称之为“平”方法该服务通过现有连接并在需要时重新创建。不知道是否有更好的方法,不是我没有看。

我的问题是,连接正在悄悄丢失,客户端最终听到一条死路线并错过了通知。