0

我想知道如何正确关闭 channelFactory。实际上,我正在使用:

try
{
   factory.Close(TimeSpan.FromSeconds(0.25))
}
catch
{
   factory.Abort();
}

但是到 ServiceHost 方面,未处理的异常到达域级别(应用程序的顶层)。我不明白为什么服务主机不捕获异常并使用我配置的 IErrorHandler 处理它。

这就是我配置 ErrorHandler 的方式:

IErrorHandler handler = new ErrorHandler();
foreach (var channelDispatcher in host.ChannelDispatchers.Select(d => d as ChannelDispatcher).Where(d => d != null))
{
    channelDispatcher.ErrorHandlers.Add(handler);
}
4

1 回答 1

0

您应该在调用 Abort() 之前检查您的工厂是否为空:

try
{
    factory.Close(TimeSpan.FromSeconds(0.25))
}
catch
{
    if (factory != null)
    {
        factory.Abort();
    }
    throw;
}
于 2012-09-17T14:12:23.407 回答