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() を呼び出す前に、ファクトリが null かどうかを確認する必要があります。

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