1

stackoverflow에있는 링크를 통해 이동 한 후 문을 사용하여 피곤했지만 여전히 정확한 해결책을 couldnt 수 있습니다.개체 '새 HttpResponseMessage()'모든 예외 경로를 따라 폐기되지 않습니다

using (MemoryStream stream = new MemoryStream(textAsBytes)) 
      { 
       using (HttpResponseMessage httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK) 
       { 
        Content = new StreamContent(stream) 
       }) 
       { 
        httpResponseMessage.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") 
        { 
         FileName = "main-theme.scss" 
        }; 
        httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("text/css"); 

        ResponseMessageResult responseMessageResult = ResponseMessage(httpResponseMessage); 
        return responseMessageResult; 
       } 
      } 

객체 다음 오류를 '새로운 HttpResponseMessage을() 메소드에서

CA2000 'GetStyleSheet()을 '모두 일 예외 경로를 따라 배치되지 않는다. System.IDisposable.Dispose에 대한 모든 참조가 범위를 벗어나기 전에 'new HttpResponseMessage()'개체를 호출하십시오. 생성

using (HttpResponseMessage httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK) 
{ 
    Content = new StreamContent(stream) 
}) 
{ 
    // ... 
} 

이 다음과 유사한 코드로 연결 :

답변

0

문제는 HttpResponseMessage을 만들 때 생성자에 추가 속성 이니셜 라이저를 사용한다는 것입니다

var httpRepsonseMessage = new HttpResponseMessage(HttpStatusCode.OK); 
httpResponseMessage.Content = new StreamContent(stream); 
try 
{ 
    // ... 
} 
finally 
{ 
    httpResponseMessage.Dispose(); 
} 

보시다시피 StreamContent를 만들고 할당 할 때 문제가 발생하면 httpResponseMessage이 처리되지 않습니다. ,이 문제를 해결할 사용하여 블록으로 할당을 이동하기 위해

: 콘텐츠를 할당 할 때 문제가있는 경우에도이 방법을

using (HttpResponseMessage httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK)) 
{ 
    httpResponseMessage.Content = new StreamContent(stream); 
    // ... 
} 

는 처리가 이루어집니다.