2010-05-20 12 views
4

ASP.net 웹 사이트에 큰 파일 (2GB 이상) 다운로드를 제공해야합니다. 나는 (내가 두꺼운 클라이언트 세계에 잠시 동안 머물 렀습니다.) 이와 같은 일을한지 얼마되지 않아 현재이 모범 사례에 대해 궁금해하고있었습니다. 이상적으로, 나는 다음과 같이 말하고 싶다.ASP.net 웹 사이트에서 다운로드 제공

  • 다운로드 통계를 추적하려면 : 다운로드 수는 필수적이다. 보낸 실제 바이트는 좋을 것이다.
  • 제 3 자 다운로드 관리자와 "훌륭하게"연동되는 방식으로 다운로드를 제공합니다. 많은 사용자는 신뢰할 수없는 인터넷 연결을 사용하며 다운로드를 재개 할 수 있어야합니다.
  • 여러 사용자가 동일한 파일을 동시에 다운로드 할 수 있도록 허용합니다.

내 다운로드 파일은 보안에 민감하지 않으므로 직접 링크 ("마우스 오른쪽 버튼으로 다운로드하여 ...")를 제공 할 수 있습니다. 그냥 직접 링크를 제공하고, IIS가 처리하게하고 통계를 컴파일하고보고하기 위해 몇 가지 로그 분석기 서비스 (권장 사항)를 사용하고 있습니까? 또는 다운로드 요청을 가로 채고 데이터베이스에 정보를 저장 한 다음 사용자 지정 응답을 보내야합니까? 또는 ASP.net 사용자 정의 컨트롤 (내장 또는 타사)이 있습니까? 나는 모든 제안에 감사드립니다.

답변

3

이전에는이 ​​기능을 제공하기 위해 사용자 지정 http 처리기를 사용했습니다. download.axd를 작성하고 간단한 HttpHandler를 작성했습니다.

public class DownloadHandler : IHttpHandler 
{ 
    public void ProcessRequest(HttpContext context) 
    { 
     // Do some logging to track stats. 

     // Set some custom response headers 

     context.Response.TransmitFile(filename); 
    } 
} 

전송 작업 방법에 대한 중요한 것은 그것이 메모리에 파일을 저장하지 않고 응답 파일을 스트리밍 점이다. 큰 파일을 다루고 있기 때문에이 점이 중요 할 것입니다.

당신은 또한 당신의 Web.config에서 핸들러를 등록해야합니다

<httpHandlers> 
    <add verb="GET,HEAD" path="download.axd" type="DownloadHandler, MyAssemby"/> 
    </httpHandlers> 

아직도 각 사람의 다운로드로 전송 실제 바이트를 추적하기가 어려울 것이다이 방법을 사용.

+0

+1 정말 좋은 예입니다! – Dal

관련 문제