IIS에서 Response.BinaryWrite를 사용할 때 HTTP 500 또는 응답 버퍼 제한이 오류를 초과했습니다.
이 문서에서는 메서드를 사용하여 Response.BinaryWrite
파일을 보낼 때 발생하는 오류(HTTP 500 또는 응답 버퍼 제한 초과)를 resolve 수 있습니다.
원래 제품 버전: 인터넷 정보 서비스 7 이상 버전
원본 KB 번호: 944886
증상
IIS(인터넷 정보 서비스) 7 이상 버전이 설치된 웹 서버에서 클라이언트 컴퓨터로 파일을 보내면 다음과 유사한 오류 메시지가 클라이언트 컴퓨터에 표시될 수 있습니다.
오류 메시지 1
HTTP 500 - 내부 서버 오류
오류 메시지 2
응답 개체 오류 'ASP 0251 : 80004005'
응답 버퍼 제한을 초과했습니다.
ASP 페이지를 실행하면 응답 버퍼가 구성된 제한을 초과했습니다.오류 메시지 3
또한 IIS 로그 파일에서 다음과 유사한 메시지를 받을 수 있습니다.
ASP_0251_:_80004005|Response_Buffer_Limit_Exceeded
이 문제는 메서드를 Response.BinaryWrite
사용하여 파일을 클라이언트 컴퓨터로 보내고 속성이 AspBufferingOn
False로 설정된 경우에 발생 합니다.
원인
이 문제는 IIS가 ASP 응답 버퍼링을 사용하지 않도록 설정한 경우 기본 ASP(Active Server Pages) 응답 버퍼 값 4MB를 적용하기 때문에 발생합니다.
대부분의 시나리오에서 4MB 버퍼 제한은 웹 클라이언트로 전송되는 ASP 응답에 충분합니다. 이 제한이 충분하지 않은 경우 다음 방법 중 하나를 사용합니다.
해결 방법 1: 응답 크기 줄이기
메서드를 사용하고 Response.BinaryWrite
ASP 버퍼링을 해제할 때 이 문제를 resolve 클라이언트에 반환되는 데이터가 4MB보다 크지 않은지 확인합니다.
응답이 4MB 기본값보다 큰 경우 이 크기로 인해 사용자 환경이 저하되는 경우가 많습니다. 웹 브라우저는 네트워크를 통해 큰 응답을 받아야 합니다. 그런 다음 웹 브라우저에서 큰 HTML 응답을 구문 분석하고 표시해야 합니다.
해결 방법 2: ASP 응답 버퍼링을 사용하도록 설정하고 버퍼 제한을 늘입니다.
IIS 메타베이스 속성을 사용하여 AspBufferingOn
애플리케이션 수준에서 버퍼링을 사용하거나 사용하지 않도록 설정할 수 있습니다.
참고
IIS 7 이상 버전에서는 파일 또는 파일의 ASP 섹션 ApplicationHost.config
<System.webserver>
에 있는 값을 사용하여 bufferingOn
애플리케이션 수준에서 ASP 응답 버퍼링을 사용하거나 Web.config
사용하지 않도록 설정할 수 있습니다.
페이지 수준에서 버퍼링을 사용하거나 사용하지 않도록 설정하려면 속성을 사용할 Response.Buffer
수 있습니다.
버퍼 제한을 늘려야 하는 경우 알려진 가장 큰 응답 크기를 허용하는 버퍼 제한을 선택합니다. 가장 큰 응답 크기를 미리 모르는 경우 테스트 중에 버퍼 제한을 큰 값으로 늘릴 수 있습니다. 테스트를 완료한 후 페이지에 대해 생성된 응답에 대해 IIS 로그 파일의 sc-bytes 필드에 표시되는 가장 큰 값을 사용합니다.
IIS 7 이상 버전에서 버퍼링 제한을 늘리려면 다음 단계를 수행합니다.
시작을 선택하고 실행을 선택하고 cmd를 입력한 다음 확인을 선택합니다.
명령을 입력한
cd /d %systemdrive%\inetpub\adminscripts
다음 Enter 키를 누릅니다.명령을 입력한
cscript.exe adsutil.vbs SET w3svc/aspbufferinglimit LimitSize
다음 Enter 키를 누릅니다.참고
LimitSize
는 버퍼링 제한 크기(바이트)를 나타냅니다. 예를 들어 67108864 숫자는 버퍼링 제한 크기를 64MB로 설정합니다.
버퍼 제한이 올바르게 설정되었는지 확인하려면 다음 단계를 수행합니다.
- 시작을 선택하고 실행을 선택하고 cmd를 입력한 다음 확인을 선택합니다.
- 명령을 입력한
cd /d %systemdrive%\inetpub\adminscripts
다음 Enter 키를 누릅니다. - 명령을 입력한
cscript.exe adsutil.vbs GET w3svc/aspbufferinglimit
다음 Enter 키를 누릅니다.
추가 정보
메서드를 Response.BinaryWrite
사용하고 ASP 응답 버퍼링을 사용하지 않도록 설정한 경우 페이지의 버퍼링 제한 속성이 명시적으로 설정되지 않는 한 클라이언트에 4MB의 데이터만 보낼 수 있습니다. 기본적으로 IIS 7 이상 버전의 속성 값 bufferLimit
은 4,194,304바이트입니다.
BinaryWrite()
또한 ASP 응답 버퍼링이 꺼져 있더라도 클라이언트에 대한 응답이 버퍼 제한 값보다 큰 경우 API가 실패합니다.
참고
ASP 응답 버퍼링을 사용하도록 설정하는 것이 좋습니다. ASP 응답 버퍼링은 웹 애플리케이션의 성능을 향상합니다.
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기