假设我要缓存ChannelFactory<T>并使用它来创建 channel 。这些 channel 用于对其他服务进行WCF调用,然后被(安全地)处置。

我是否需要担心缓存的ChannelFactory出现故障并因此无法用于创建新 channel 的情况?
如果是这样,我是否需要用新的ChannelFactory替换它?

对于ChannelFactory出现故障的情况,我也将提供一个可重现的具体示例。

最佳答案

在这种情况下,我认为您不必担心故障状态。
ChannelFactory在打开过程中遇到问题时,其状态会更改为Faulted(调用Open()方法或创建第一个 channel 而不调用Open()时可能发生的情况)。

var factory = new ChannelFactory<ITestService>();
try
{
    factory.Open();
}
catch
{
    Console.WriteLine(factory.State);
}

10-08 19:15