ASP(Active Server Pages) 요청을 사용하여 Microsoft 인터넷 정보 서비스(IIS) 5.0, Microsoft 인터넷 정보 서비스(IIS) 5.1 또는 Microsoft 인터넷 정보 서비스(IIS) 6.0이 설치된 컴퓨터에 큰 파일을 업로드하면 업로드가 실패할 수 있습니다. 또한 403 오류 응답이나 다음 중 하나와 유사한 오류 메시지가 나타날 수 있습니다.


오류 메시지 1
Request object error 'ASP 0104 : 80004005' 허용되지 않는 작업 :

오류 메시지 2

007~ASP 0104~허용되지 않는 작업

많은 폼 데이터를 ASP 페이지에 게시할 때 다음과 유사한 오류 메시지가 나타날 수 있습니다.

오류 ’80020009’ 예외가 발생했습니다.

또한 Response.binaryWrite 메서드를 사용할 때 파일 업로드가 실패할 수 있습니다.


이 문제는 Content-Length 헤더가 있고 Content-Length 헤더에서 IIS 메타베이스의 AspMaxRequestEntityAllowed 속성 값보다 큰 데이터 양을 지정하는 경우 발생합니다. AspMaxRequestEntityAllowed 속성의 기본값은 204,800바이트입니다.


해결 방법

cscript adsutil.vbs set w3svc/ASPMaxRequestEntityAllowed size

(*이 명령에서 size는 허용할 최대 파일 크기 업로드의 자리 표시자입니다. 최대값은 1,073,741,824바이트입니다. 이 값을 원하는 기능에 허용되는 최소값으로 설정하십시오.)

--> 업로드 컴포넌트의 성능에 따라서, 대용량 파일을 업로드 하면 웹서버측 메모리 과다 점유로 인해서 성능저하가 발생할 수 있으니 조심 스럽게 설정하는게 좋습니다.^^

이와 관련된 메타베이스 값으로 AspBufferingLimit 있습니다. 이 부분은 다운로드 버퍼링에 관련된 것으로 파일 링크를 막기 위해서 Asp 코드에 파일 쓰기후 다운로드 처리를 하는 경우가 많은데요,. 이때 대용량 파일 다운로드시에 지정된 크기 이상일 경우 오류가 발생하게 됩니다.

AspBufferingLimit : http://msdn.microsoft.com/library/default.asp?url=/library/
en-us/iissdk/html/ecfc3d4a-0178-45e8-89f8-304429b7fda5.asp



AspMaxRequestEntityAllowed 속성은 ASP 요청의 엔터티 본문에서 허용되는 최대 바이트 수를 지정합니다. Content-Length 헤더가 있고 Content-Length 헤더에서 AspMaxRequestEntityAllowed 속성 값보다 큰 데이터 양을 지정하는 경우 IIS에서 403 오류 응답을 반환합니다. AspMaxRequestEntityAllowed 속성은 PUT 요청과 POST 요청에만 적용되고, GET 요청에는 적용되지 않습니다. 이 메타베이스 속성이 ASP에만 적용되기 때문에 다른 ISAPI(인터넷 서버 API) 확장은 영향을 받지 않습니다.

AspMaxRequestEntityAllowed 속성은 MaxRequestEntityAllowed 속성의 기능과 관련되어 있습니다. 그러나 AspMaxRequestEntityAllowed 속성은 ASP 요청에만 적용됩니다. MaxRequestEntityAllowed 속성을 WWW 서비스(World Wide Web 게시 서비스) 수준에서 1MB로 설정할 수 있습니다. 그런 다음 특정 ASP 응용 프로그램에서 더 작은 양의 데이터를 처리하는 것을 알고 있는 경우 AspMaxRequestEntityAllowed 속성을 더 작은 값으로 설정할 수 있습니다.

--> ASP.NET 에서는 machine.config  또는 전역 web.config 및 각 웹사이트의 web.config 에서 지정할 수 있습니다.^^
2009/08/25 14:19 2009/08/25 14:19

Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다