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 이상 버전에서 버퍼링 제한을 늘리려면 다음 단계를 수행합니다.

  1. 시작을 선택하고 실행을 선택하고 cmd를 입력한 다음 확인을 선택합니다.

  2. 명령을 입력한 cd /d %systemdrive%\inetpub\adminscripts 다음 Enter 키를 누릅니다.

  3. 명령을 입력한 cscript.exe adsutil.vbs SET w3svc/aspbufferinglimit LimitSize 다음 Enter 키를 누릅니다.

    참고

    LimitSize 는 버퍼링 제한 크기(바이트)를 나타냅니다. 예를 들어 67108864 숫자는 버퍼링 제한 크기를 64MB로 설정합니다.

버퍼 제한이 올바르게 설정되었는지 확인하려면 다음 단계를 수행합니다.

  1. 시작을 선택하고 실행을 선택하고 cmd를 입력한 다음 확인을 선택합니다.
  2. 명령을 입력한 cd /d %systemdrive%\inetpub\adminscripts 다음 Enter 키를 누릅니다.
  3. 명령을 입력한 cscript.exe adsutil.vbs GET w3svc/aspbufferinglimit 다음 Enter 키를 누릅니다.

추가 정보

메서드를 Response.BinaryWrite 사용하고 ASP 응답 버퍼링을 사용하지 않도록 설정한 경우 페이지의 버퍼링 제한 속성이 명시적으로 설정되지 않는 한 클라이언트에 4MB의 데이터만 보낼 수 있습니다. 기본적으로 IIS 7 이상 버전의 속성 값 bufferLimit 은 4,194,304바이트입니다.

BinaryWrite() 또한 ASP 응답 버퍼링이 꺼져 있더라도 클라이언트에 대한 응답이 버퍼 제한 값보다 큰 경우 API가 실패합니다.

참고

ASP 응답 버퍼링을 사용하도록 설정하는 것이 좋습니다. ASP 응답 버퍼링은 웹 애플리케이션의 성능을 향상합니다.