2016-08-09 12 views
2

Web API 2を使用しており、ExceptionFilterAttributeを継承してカスタム属性を作成する例外を処理しています。 JSONリクエストのログを例外の場合にデータベースに保存します。例外の場合のHttpActionExecutedContextでのJSON本体の読み込み方法

私はcontext.Request.Content.ReadAsStringAsync()を使用して読み取ろうとしましたが、結果は空の文字列を返します。

助けてください!

答えて

0

あなたは要求ストリームの位置をリセットし、それを再読み込みすることができます

class CustomExceptionFilterAttribute : ExceptionFilterAttribute 
{ 
    public override async Task OnExceptionAsync(HttpActionExecutedContext context, CancellationToken cancellationToken) 
    { 
     var stream = await context.Request.Content.ReadAsStreamAsync(); 
     stream.Position = 0; 
     using (var reader = new StreamReader(stream)) 
     { 
      var requestString = reader.ReadToEnd(); 
     } 
    } 
} 
+0

おかげで、私の質問に答えるとソリューションを提供するが、私はonExceptionをメソッドを使用していたときのために、私はリクエストボディを読み取ることができないです理由。提案してください。 – ChupChapCharli

+1

要求ストリームはすでにフレームワークによって解析され、読み取られているためです。私はストリームを最初まで探していたのと同じトリックを使うことができます。 –

関連する問題