そして、それを修正する方法。メンテナンスのために、スローされたすべての例外をログに記録したいと思います。
3 に答える
これは .Net の既知の問題です。Web サービスに対して Application_Error が発生することはありません。設計上の理由があるかどうかはわかりませんが、機能しません。
Jeff Atwood は、数年前にこれについて投稿(およびフォローアップ) を行い、次のアイデアを示しました。
- 各 Web サービス メソッドの周りに try-catch ブロックを置きます
- ファサード デザイン パターンを使用し、親オブジェクトに try-catch を含めます
- カスタム SOAP 拡張機能または HTTPModule を作成する
大変な作業のように見えますが、私が気にするのは最初のものだけです。
より良い: HttpApplication.Error イベント:
ノート:
Web アプリケーションに XML Web サービスが含まれている場合、これらのサービスのグローバルな例外処理に Error イベントを使用することはできません。XML Web サービスの HTTP ハンドラーは、XML Web サービスで発生した例外を消費し、Error が呼び出される前にそれを SOAP エラーに変換します。XML Web サービス例外を処理するには、カスタム グローバル例外ハンドラーで Web サービス例外を処理するための SOAP 拡張機能を構築します。詳細については、「XML Web サービスでの例外の処理とスロー」を参照してください。
このトピックに関するMicrosoftの言葉をお探しの方は、「XMLWebサービスでの例外の処理とスロー」を参照してください。
これは関連するセクションです:
Webアプリケーションは複数のXMLWebサービスで構成できますが、Global.asaxファイル内のApplication_Errorイベントをグローバル例外処理に使用することはできません。XML WebサービスのHttpHandlerは、XML Webサービスの実行中に発生した例外をすべて消費し、Application_Errorイベントが呼び出される前にそれをSOAP障害に変換します。