ChannelFactory 会出现故障吗?
Posted
技术标签:
【中文标题】ChannelFactory 会出现故障吗?【英文标题】:Can a ChannelFactory become Faulted? 【发布时间】:2012-12-08 03:47:43 【问题描述】:假设我正在缓存 ChannelFactory<T>
并使用它来创建频道。这些通道用于对其他服务进行 WCF 调用,然后被(安全地)处置。
我是否需要担心缓存的ChannelFactory
出现故障从而无法用于创建新频道的情况?
如果是这样,我需要用新的ChannelFactory
替换它吗?
对于ChannelFactory
出现故障的情况,我还希望有一个可重现的具体示例。
【问题讨论】:
如果担心,您始终可以在访问之前检查状态,以防止访问已关闭或故障的通道。 @atconway 我说的是 ChannelFactory 出现故障,而不是通道。如果我不需要的话,我不想实现重新创建通道工厂的逻辑... 我正要问同样的问题。在我看来,只要您的各个通道得到正确处理,您在 ChannelFactory 中看到的唯一错误就会发生在类的实例化期间。自那以后您是否遇到任何其他问题? 【参考方案1】:我认为在这种情况下您无需担心故障状态。 ChannelFactory 在打开过程中出现问题时将其状态更改为 Faulted(当您调用 Open() 方法或在未调用 Open() 的情况下创建第一个通道时会发生这种情况)。
var factory = new ChannelFactory<ITestService>();
try
factory.Open();
catch
Console.WriteLine(factory.State);
【讨论】:
以上是关于ChannelFactory 会出现故障吗?的主要内容,如果未能解决你的问题,请参考以下文章
WCF,ChannelFactory,“找不到端点元素...”
ChannelFactory:Channel Close() 未关闭连接(netstat 显示 ESTABLISHED)