2017-03-10 5 views
1

PushStreamContent 클래스를 사용하여 HTTP 응답에 데이터를 씁니다. onStreamAvailable 대리자 실행 결과에 따라 적절한 HTTP 상태 코드를 검색해야합니다. 다음은 예시적인 코드 :HttpResponse - 상태 코드를 설정하는 방법은 PushStreamContent 실행 결과에 따라 다릅니다.

[HttpGet] 
public HttpResponseMessage Get(int id) 
{ 
    try 
    { 
     HttpResponseMessage response = this.Request.CreateResponse(); 
     response.Content = new PushStreamContent((Stream outputStream, HttpContent content, TransportContext context) => 
     { 
      try 
      { 
       throw new Exception("Just an exception"); 

       response.StatusCode = HttpStatusCode.OK; 
      } 
      catch (Exception ex) 
      { 
       using (StreamWriter sw = new StreamWriter(outputStream)) 
       { 
        sw.WriteLine(ex.Message); 
        sw.Flush(); 
       } 

       response.StatusCode = HttpStatusCode.InternalServerError; 
      } 
     }); 

     return response; 
    } 
    catch (Exception ex) 
    { 
     return this.Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex); 
    } 
} 

항상 상태 코드 (200)를 검색하여 상기 예 (OK). 어떻게 해결할 수 있습니까?

답변

1

PushStreamContent 동작 내에서 수정할 수 없습니다. 당신이 상태 코드를 설정하고있는 시점에 이르면 이미 응답을 보내고 이미 200을 보냈습니다. 이것은 PushStreamContent의 단점입니다.

관련 문제