WCFサービスは、クライアントが気にしないものを処理するために、ときどきワーカースレッドを生成します。ワーカースレッドは、ステータスをクライアントに報告しません。実際には、サービスはスレッドが終了するまでにすでにクライアントに結果を返している可能性があります。WCFのスレッド例外の処理
これらのバックグラウンドスレッドの1つでは最近例外が発生しました。例外は処理されず、IISがクラッシュしました。
私はこの特定の例外を修正できますが、将来他の予期しない例外を引き起こすコードを追加する可能性があります。私はこれが将来IISをクラッシュさせないようにしたい。
私はSystem.Windows.FormsアプリケーションがApplication.ThreadException
を実装することによってスレッド例外を処理できることを知っています。 WCFサービスと同様のことはありますか?またはApplication.ThreadException
が行く方法であれば、どうすればWCFサービスから接続できますか?
AppDomain.UnhandledException
のMSDNのドキュメントには、クラッシュを防止しないと記載されています。 ServiceModel.AsynchronousThreadExceptionHandler
のドキュメントは、それがWCFスレッドのためだけであることを示しています。
少なくとも、クラッシュする前に例外からスタックトレースを取得したいが、将来のクラッシュを完全に避けることが理想的である。
また、これは例外ではなく、クライアントにWCF障害として戻すことを強調しておきます。
downvoteの理由を言って下さい。アンサーは、何が間違っているかを知らなければ、改善することはまずありません。 –
私はこれに同意します...予想される例外がある場合は、その起源に近いものを処理する必要があります。予期しない場合は、アプリがクラッシュする可能性があります。 –
ワーカースレッド内のコードは、未知の状態にあるものを残してしまったようなものは何もしません。 IIS自体が攻撃されない限り、私はむしろクラッシュすることはありません。私はむしろ問題をログに記録し、それに沿って頑張ってください。 (私は何も投票しなかったことに注意してください) –