アプリケーションからスローされた未処理の例外をすべてキャプチャしたいC#WebServiceアプリケーションがあります。
これどうやってするの?
何らかの理由で、Application_ErrorイベントはWebサービスに対して発生しません(他の質問を参照)。ジェフ・アトウッド氏自身がコーディングホラーブログにアドバイスを投稿しています。
彼は書く:
*すべてのWebServiceメソッドの周りにtry..catchを配置します。これらのメソッドは他のクラスのラッパーになる傾向があるため、これは思ったほど悪くはありませんが、それでも良くありません。
* Facadeデザインパターンを使用して、基本的に.Executeメソッドでtry..catchを実行する親オブジェクトからすべてのオブジェクトを派生させます。ええと、感謝しますが、感謝しません。
*カスタムSOAP拡張機能またはHttpModuleを記述します。これは合理的に聞こえますが..難しいです。それがとてもクールで重要な拡張機能またはHttpModuleである場合、誰かがすでにそれを書いているのではないでしょうか?
1つの方法は、ハンドラーAppDomain.UnhandledException
のどこかでイベントをサブスクライブすることです。App_Start