2016-08-09 4 views
2

웹 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

요청 스트림이 이미 프레임 워크에서 구문 분석되고 읽혀지기 때문입니다. 내가 시작했던 때와 똑같은 트릭을 사용할 수 있습니다. –

관련 문제