扩展WCF通道以在失败时自动重新创建(/重新连接)自身

时间:2012-07-13 10:10:00

标签: .net wcf nettcpbinding channelfactory

我很难使用NetTcpBinding和超时。我知道这可以通过围绕每个服务调用编写Try-Catch-block来解决,并且在失败时使用ChannelFactory创建一个新频道并再次进行相同的调用。唯一的问题是我有数百个地方需要做这个丑陋的措施。

我知道必须有更好的解决方案。不幸的是继承不在我的情况下。方面可行,但在.net中没有真正支持它们。

我想知道WCF(频道模型?)是否可以以如下方式扩展:如果抛出timeout-exeption,则会自动重新生成频道(或尝试重新连接)并再次进行相同的调用。一切都在幕后。

1 个答案:

答案 0 :(得分:3)

在我们的一个项目中,我们使用了一个包含真实ServiceClient的代理,并在通道调用周围添加了一个try-catch。 当引发异常并且频道出现故障时,我们重新打开连接并再次呼叫 我们设置了一个阈值,在超时3次之后我们不会再次调用相同的方法。

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