본문 바로가기

C#(ASP.NET)

Asp.net 에서 대용량 파일업로드 경우, Timeout 에 대한 이야기


웹상에서 파일을 1기가 정도 데이터를 올릴려고 하는 사용자들이 있습니다. 이분들을 위해 우리 개발자들은 asp.net 으로

http 를 이용하여 업로드를 하는 구현을 해야 합니다. http 방식 말고도 ftp 방식으로 사용을 할 수도 있고요.

이번에 이야기 할것은 http 를 이용하여 어떻게 만들어야 하는지를 확인해 볼까 합니다.


사실 1gb 를 업로드 할 경우, 여러분들도 아시다시피 많은 시간이 소요됩니다. 따라서 이 부분에 대해 파일 업로드 사이즈나 기타 등등 변경할 사항이 다소 있습니다. 아래와 같은 1,2, 3 목록대로 환경설정을 변경할 필요가 있습니다.


  1. executionTimeOut : 기본 값이 110 초 입니다. 적어도 12시간으로로 실행시간을 설정해주셔야겠지요.
  2. maxRequestLength : 기본 값이 4096 KB (4 MB) 입니다. 이것도 최소 1 GB size 로 설정해줘야 겠지요.
  3. Session Timeout : 기본값은 20분입니다. 이것도 executionTimeOut 에 따라 변경해 주셔야 겠지요.

위의 두가지 경우는 httpRuntime 의 속성 환경을 가지고 변경해야 합니다. 그리고 세션에 대한 timeout 도 변경해주셔야겠지요.

업로드 하는데 시간이 오래 걸리면 세션 timeout 으로 인해 로긴페이지로 이동하는 불상사를 없애야 하기 때문이죠.


환경설정 파일인 web.config 에서 해당 configuration 속성을 아래와 같이 설정해 줍니다.

   1: <httpRuntime executionTimeout="43200" maxRequestLength="104856"  />
   2: <sessionState mode="InProc" cookieless="false" timeout="720"/>


Notice, executionTimeout needs to be filled in seconds where as timeout of sessionstate needs minutes as input.

주목할것은 executionTimeout 는 초단위로 설정해야 하며, sessionState 의 timeout 은 분단위로 해주시기 바랍니다. 


이제 다 돼었을것 같다고 생각해지만 그렇지 않습니다. 

iis 의 Application Pool 을 아시겠지만 거기에도  timeout 설정해야 합니다.




감사합니다.


[출처] 닷넷(.NET) 프로그래머 모임