12

特定の状況で SerializationException をスローする ASP.NET Web API Web サービスがあります。問題は、この例外をサーバー側でトラップしてログに記録できないことです。例外が表示される唯一の場所は、クライアントへの HTTP 応答の本文です。

「 ASP.NET Web API での例外処理ExceptionFilterAttribute」で説明されているように を登録し、コントローラー内で例外をスローしたときに正しく動作することを確認しました。残念ながら、SerializationException は応答中 (コントローラーの後) にスローされており、ASP.NET によって完全に飲み込まれているようです。Global.asax.csにもフックしようとしましたが、そこにも表示されませんでした。Application_Error()

Web API 応答中に SerializationException 例外をキャッチするにはどうすればよいですか?

4

3 に答える 3

2

の実装を登録することで、すべての Web API 例外をキャッチできますIExceptionHandler

Web API グローバル エラー処理を参照してください。

...例外フィルターが処理できないケースが多数あります。例えば:

  • コントローラー コンストラクターからスローされる例外。
  • メッセージ ハンドラーからスローされた例外。
  • ルーティング中にスローされる例外。
  • 応答コンテンツのシリアル化中に例外がスローされました。

その記事で言及されていないことの 1 つIExceptionHandlerGlobalConfiguration.Configuration.Services.Add(...)DependencyResolver.

于 2014-03-04T06:41:30.700 に答える