2010-02-05 7 views
3

제 작업 자리에는 다음 코드를 사용하여 파일 다운로드를 수행하는 ASP.NET 페이지가 있습니다. 파일이 zip 아카이브에서 직접오고 있기 때문에 Request.TransmitFile() 대신이 파일을 사용합니다. 큰 다운로드에 대한 httpRuntime 실행 제한 시간 구성

private void DownloadStream(Stream stream) 
    { 
     int bytesRead; 
     int chunkSize = 1048576; //1MB 
     byte[] readBuffer = new byte[chunkSize]; 

     while ((bytesRead = stream.Read(readBuffer, 0, readBuffer.Length)) > 0) 
     { 
      if (!Response.IsClientConnected) 
       break; 

      Response.OutputStream.Write(readBuffer, 0, bytesRead); 
      Response.Flush(); 
     } 
    } 

은 내가 httpRuntime을 executionTimeout에 설정을위한 합리적인 값을 결정하기 위해 노력하고있어. 전송되는 파일의 크기는 최대 1GB이며, 일부 사용자는 웹 서버에 대해 매우 느린 파이프 *을 가지고 있습니다 (64K 라인을 생각하십시오). 이러한 사용자는 연결 재설정을 경험하지 않아도됩니다. 그러나 나머지 사이트에 대해서는 합당한 시간 초과 값을 유지하려고합니다.

이 특정 페이지에 대해 의 executionTimeout 설정을 정의하는 방법이 있습니까? (또는 해당 페이지를 특별히 무제한으로 만들 수 있습니까?) 권장되는 접근 방식은 무엇입니까? 우리는 아마도 파일을 제공하는 완전히 다른 방법 (예 : FTP)을 사용하는 편이 나을지도 모르지만 그 선택을 할 자유가 없습니다. 우리가 할 수있는 일은 사이트 코드를 수정하는 것뿐입니다.

또한 해야합니까 보내기 전에 이러한 다운로드를 압축해야한다고 생각하지만 다른 문제입니다.

* 주제 외의 질문 : "느린 파이프"는 성가신 혼합 은유입니까? 나는 아마도 "작은 파이프"라고 대신 말해야하지만,이 맥락에서 나에게 이상하게 들린다. 의견?

+0

를 사용하고 있기 때문에 여기에 몇 가지 좋은 사례가 있는데, 1KB의 청크에 어떻게 도착 했습니까? 85KB보다 큰 항목은 큰 개체 힙에 저장되기 때문에 어떻게 말했습니까? – user420667

+1

@ user420667 기억하기에는 너무 길었습니다. 6 년 전 나는 그 선택이 자의적이라고 말할 수 있습니다. – Odrade

답변

7

이 특정 페이지에 대해서만 executionTimeout 설정을 정의 할 수 있습니까 (또는 해당 페이지에 대해 특별히 무제한으로 만들 수 있습니까)? 권장되는 접근 방식은 무엇입니까?


예, 당신은 자신의 Web.config이있는 하위 디렉토리를 만들고 하위 디렉토리에 particluar 설정을 필요로하는 특정 페이지를 넣을 수 있습니다. 에서 web.config 파일의 스키마는 특정 경로 (심지어 특정 페이지)에 대한 설정을 지정하는 데 도움이되는 요소를 제공합니다.

: 당신은 그냥 한 페이지 (upload.aspx)에 대한 설정을 무시하려는 경우 는 예를 들어, 아래와 같이 web.config 파일에서 요소를 적용 할 수 있습니다 여기 http://www.velocityreviews.com/forums/t75299-executiontimeout.html

더 많은 정보를 원하시면 여기 http://forums.asp.net/t/1235207.aspx
과 : 당신은 일반적으로 http://codebetter.com/blogs/peter.van.ooijen/archive/2006/06/15/146446.aspx

+0

아, 그게 내가 찾고 있던거야. 분명히, 나는 asp.net에 처음이다. 감사! – Odrade

+0

나는 그 지시를 따르고 심지어 페이지에'Server.ScriptTimeout'의 값을 인쇄합니다. 인쇄 된 값이 내가 설정 한 값이지만 90 초 후에 페이지가 시간 초과됩니다. 누락 된 부분이있을 수 있습니다. – Farinha

+0

나는 이틀 전에 같은 문제가 있었고이 기사도 보았습니다. 그것은 또한 나를 위해 작동하지 않았다.방금 해결 방법을 찾았습니다. 도움이되기를 바랍니다. 다음 링크를 방문하십시오. http://stackoverflow.com/questions/4490017/asp-net-httpruntime-executiontimeout-not-working-and-yes-debug-false –