我很难使用NetTcpBinding和超时。我知道这可以通过围绕每个服务调用编写Try-Catch-block来解决,并且在失败时使用ChannelFactory创建一个新频道并再次进行相同的调用。唯一的问题是我有数百个地方需要做这个丑陋的措施。
我知道必须有更好的解决方案。不幸的是继承不在我的情况下。方面可行,但在.net中没有真正支持它们。
我想知道WCF(频道模型?)是否可以以如下方式扩展:如果抛出timeout-exeption,则会自动重新生成频道(或尝试重新连接)并再次进行相同的调用。一切都在幕后。
答案 0 :(得分:3)
在我们的一个项目中,我们使用了一个包含真实ServiceClient的代理,并在通道调用周围添加了一个try-catch。
当引发异常并且频道出现故障时,我们重新打开连接并再次呼叫
我们设置了一个阈值,在超时3次之后我们不会再次调用相同的方法。
您可以使用DynamicProxy或Unity Interceptor来创建此类机制。
此链接可能有用http://kozmic.pl/2009/05/03/wcf-client-proxy-with-castle-dynamic-proxy/