2012-07-13 90 views
1

我很难与NetTcpBinding和超时。我知道这可以通过在每次服务调用时编写Try-Catch-block来解决,并且在失败时用ChannelFactory创建一个新频道并再次进行相同的调用。唯一的问题是,有几百个地方我不得不做这种丑陋的措施。扩展WCF通道自动重新创建(/重新连接)本身在失败

我知道必须有更好的解决方案。不幸的是继承不在我的情况。方面将工作,但没有真正的支持他们在.net ..

我想知道如果WCF(通道模型?)可以扩展的方式,如果超时,exeption被抛出,通道会自动重新生成(或它试图重新连接),并再次进行相同的呼叫。所有幕后。

回答

3

在我们的一个项目中,我们使用了一个代理来封装真正的ServiceClient,并对通道的调用进行了尝试。
当发生异常并且通道出现故障时,我们重新打开连接并重新调用。
我们放了一个阈值,在3次超时后,我们不会再次调用相同的方法。

您可以使用DynamicProxy或Unity Interceptor来创建这种机制。
此链接可能是有用的http://kozmic.pl/2009/05/03/wcf-client-proxy-with-castle-dynamic-proxy/

+0

谢谢!这比我想要的还要好。 – Juha 2012-07-16 11:55:49