我想知道如何正确关闭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);
}
答案 0 :(得分:0)
在调用Abort()之前,您应该检查您的工厂是否为空:
try
{
factory.Close(TimeSpan.FromSeconds(0.25))
}
catch
{
if (factory != null)
{
factory.Abort();
}
throw;
}