1

asp.net Web API プロジェクトがあります。私のコントローラーでは、

ExceptionFilterAttribute

グローバル レベルでエラーをキャッチします。コントローラー メソッドから 2 つの get 要求が発行されています。それらは失敗しているため、例外フィルターで例外が発生しています。ただし、例外は失敗したリクエストの詳細を表示していません。それらを手に入れることは可能ですか?たとえば、4 つの GET 要求が呼び出された可能性があり、そのうちの 1 つが失敗し、例外がスローされています。しかし、私が見ているのは、というメッセージだけです...

リモート名を解決できませんでした: 'xx.xx.com'

しかし、クエリ文字列などの詳細が必要です...

Web例外の応答オブジェクトもnullです:-(

4

1 に答える 1

0

OnExceptionあなたのメソッド内にはExceptionFilterAttribute、 type のパラメータ引数がありますHttpActionExecutedContextRequestこのクラスのインスタンス内で、およびプロパティにアクセスしてResponse、要求または応答のいずれかで必要なすべての情報を取得できます。プロパティ内では、ActionContextすべてのルーティング、コントローラー、およびアクション情報を取得することもできます。

var requestHttpMethod = actionExecutedContext.Request.Method;
var requestUri = actionExecutedContext.Request.RequestUri;

var controllerDescriptor = actionExecutedContext.ActionContext.ControllerContext.ControllerDescriptor;
var actionDescriptor = actionExecutedContext.ActionContext.ActionDescriptor;

応答オブジェクトを変更して、より適切なエラー メッセージを返すこともできます。これらのクラスが提供する情報を少し調べてみてください。

于 2013-02-20T11:00:23.797 に答える