2012-03-09 8 views
1

Application.ThreadExceptionイベントは私のWCFサービスで聞くことができません。私はこれがWinFormsのためだと思うので、WCFサービスのためにThreadExceptionイベントがありますか?または、それらはAppDomain.CurrentDomain.UnhandledExceptionに終わるでしょうか?WCFサービスでApplication.ThreadExceptionが発生しましたか?

答えて

0

Application.ThreadExceptionイベントは、それがWCFサービスではあまり役に立たないので、(強調はMSDN、追加)「にWindowsがスレッドフォーム起こりそうでない場合は未処理の例外を処理するために」するために使用されます。

実際にAppDomain.CurrentDomain.UnhandledExceptionを使用することをお勧めします。ただし、プロセスが終了するのを防ぐことはできません。このイベントでは、「システムデフォルトハンドラが例外をユーザに報告してアプリケーションを終了する」前に、いくつかのロギングやエラー報告を行うことができます。 (MSDN)。

多くの場合、独自のIErrorHandlerを実装することもできます。また、WCFのエラー処理に関するベストプラクティスについては、this blog entryをチェックアウトしてください。

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

あなたはまた、としてカスタム属性を使用してIErrorHandlersを配線することができますように見えますhttp://msdn.microsoft.com/en-us/library/ms751439.aspx

0

クライアントフレームワークによって異なります。 WCFの障害は、クライアント側の例外としてスローなので、他のグローバルな例外ハンドラのようにそれらを処理します:

のWinformsが

Application.ThreadException 

WPFを使用して使用しています:キリスト教の状態として

Application.DispatcherUnhandledException 

、これらは、 "GUI"スレッドで例外がスローされるだけですが、WCFはデュプレックスサービスのコールバックをデフォルトでこれにマーシャリングします。

関連する問題