.net - 扩展 WCF channel 以在失败时自动重新创建(/重新连接)自身

标签 .net wcf nettcpbinding channelfactory

我在 NetTcpBinding 和超时方面遇到了困难。我知道这可以通过在每个服务调用周围编写 Try-Catch-block 来解决,并在失败时使用 ChannelFactory 创建一个新 channel 并再次进行相同的调用。唯一的问题是,我必须在数百个地方采取这种丑陋的措施。

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

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

最佳答案

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

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

关于.net - 扩展 WCF channel 以在失败时自动重新创建(/重新连接)自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11468411/

相关文章:

.net - WCF TLS 密码套件

WCF - 使用带有 net.tcp 绑定(bind)的 WS-Compression 未关闭套接字连接

c# - 为什么我通过 C# 创建的这个 javascript 变量只更新一次?

c# - 在用户的启动文件夹中放置快捷方式以启动 Windows

c# - 什么是只读集合?

javascript - WCF Rest Api 日期时间 JSON 序列化问题

wcf - IIS 托管 WCF 服务不回收 TCP 端口 "Insufficient winsock resources"

wcf - 使用 netTcpBinding 在 IIS 7.0 中托管 WCF 服务到底需要做什么?

c# - 修改machine.config后VS崩溃,组件也多

c# - .NET 2.0 中的 SignumFramework?