1

Application.ThreadExceptionWCF サービスでリッスンするイベントが見つかりません。これは WinForms 用だと思いますが、ThreadExceptionWCF サービス用のイベントはありますか? それとも彼らはで終わるのAppDomain.CurrentDomain.UnhandledExceptionだろうか?

4

3 に答える 3

0

IErrorHandlerを実装する必要があるようです:http: //msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.ierrorhandler.aspx

次に、ハンドラーをServiceHostに登録します:http: //msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.channeldispatcher.errorhandlers.aspx

http://msdn.microsoft.com/en-us/library/ms751439.aspxで説明されているように、カスタム属性を使用してIErrorHandlerを接続することもできるようです。

于 2012-03-09T08:50:39.023 に答える
0

クライアントのフレームワークによって異なります。WCF エラーはクライアント側で例外としてスローされるため、他のグローバル例外ハンドラーと同様に処理します。

Winform の使用

Application.ThreadException

WPF は以下を使用します。

Application.DispatcherUnhandledException

クリスチャンが述べているように、これらは「GUI」スレッドでスローされた例外のみを対象としていますが、WCF はデフォルトで二重サービスのコールバックをこれらにマーシャリングします。

于 2012-03-09T09:16:22.147 に答える
0

このイベントは、「 Windows フォーム スレッドApplication.ThreadExceptionで発生する未処理の例外を処理する」ためだけに使用されるため(強調を追加、MSDN )、WCF サービスではあまり役に立ちません。

あなたの最善の策は、実際に使用することAppDomain.CurrentDomain.UnhandledExceptionです。ただし、プロセスの終了を防ぐことはできないことに注意してください。このイベントは、「システムのデフォルト ハンドラーがユーザーに例外を報告し、アプリケーションを終了する」前に、何らかのログ記録またはエラー報告を行うことを許可するだけです。( MSDN )。

独自の を実装したいと考える人も多いでしょうIErrorHandler。また、WCF エラー処理のベスト プラクティスに関するこのブログ エントリもチェックしてください。

于 2012-03-09T08:49:18.863 に答える