2

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

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

我想知道是否可以扩展 WCF(通道模型?),如果抛出超时异常,通道会自动重新生成(或它尝试重新连接)并再次进行相同的调用。都在幕后。

4

1 回答 1

3

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

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

于 2012-07-14T08:26:56.520 回答