웹 서버가 HTTP를 통해 다른 소스에서 파일을 검색하고 동시에 브라우저로 스트리밍하는 파일 다운로드 기능을 제공해야합니다. . 내가 MVC의 Controller.File ActionResult를 사용하여 작동하지 않습니다 추측하고 있지만, 어쨌든이 같은 프로토 타입을 썼다 :ASP.NET MVC 3은 서버가 다른 곳에서 파일을 가져 오는 동안 브라우저에 대용량 파일 다운로드를 제공합니다.
public ActionResult Download()
{
HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create("http://somewhere/somefile.pdf");
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
Stream stream = webResponse.GetResponseStream();
var mimeType = "application/pdf";
var fileName = "somefile.pdf";
return File(stream, mimeType, fileName);
}
이 잘 작동하지만 호출 할 방법이없는 HttpWebResponse 클래스 및 스트림 이후에() 닫기 return 문. HttpWebResponse.GetResponseStream 메서드의 help은 "스트림을 닫고 다시 사용하기 위해 연결을 해제하려면 Stream.Close 또는 HttpWebResponse.Close 메서드를 호출해야하며 Stream.Close 및 HttpWebResponse.Close를 호출 할 필요는 없습니다. 하지만 이렇게하면 오류가 발생하지 않습니다. 스트림을 닫지 않으면 응용 프로그램의 연결이 끊어집니다. "
HttpHandler를 만들고 소스 스트림에서 수동으로 바이트를 읽고 응답에 대해 this 또는 this 라인을 따라 작성해야합니까? 내가 알지 못하는 또 다른 접근법이 있습니까?
[이 질문에] (http://stackoverflow.com/questions/2129428/does-file-in-asp-net-mvc-close-the-stream), 프레임 워크가 스트림을 닫습니다. 이 경우. –