Error superado por el límite http 500 o del búfer de respuesta al usar Response.BinaryWrite en IIS

Este artículo le ayuda a resolver el error (http 500 o límite de búfer de respuesta superado) que se produce cuando se usa el Response.BinaryWrite método para enviar un archivo.

Versión original del producto: Internet Information Services 7 y versiones posteriores
Número de KB original: 944886

Síntomas

Al enviar un archivo a un equipo cliente desde un servidor web en el que está instalado Internet Information Services (IIS) 7 o una versión posterior, es posible que reciba un mensaje de error en el equipo cliente similar al siguiente:

  • Mensaje de error 1

    HTTP 500: error interno del servidor

  • Mensaje de error 2

    Error del objeto de respuesta "ASP 0251 : 80004005"
    Límite de búfer de respuesta superado
    La ejecución de la página ASP hizo que el búfer de respuesta superara su límite configurado.

  • Mensaje de error 3

    Además, puede recibir un mensaje en el archivo de registro de IIS similar al siguiente:

    ASP_0251_:_80004005|Response_Buffer_Limit_Exceeded

Este problema se produce cuando se usa el Response.BinaryWrite método para enviar el archivo al equipo cliente y la AspBufferingOn propiedad se establece en False.

Causa

Este problema se produce porque IIS aplica un valor predeterminado de búfer de respuesta de Active Server Pages (ASP) de 4 MB cuando se deshabilita el almacenamiento en búfer de respuesta asp.

En la mayoría de los escenarios, el límite de búfer de 4 MB es suficiente para las respuestas ASP que se envían a los clientes web. Si este límite es insuficiente, use uno de los métodos siguientes.

Resolución 1: Reducir el tamaño de la respuesta

Para resolver este problema cuando se usa el Response.BinaryWrite método y el almacenamiento en búfer de ASP está desactivado, compruebe que los datos devueltos al cliente no superen los 4 MB.

Si la respuesta es mayor que el valor predeterminado de 4 MB, este tamaño suele provocar una experiencia de usuario deficiente. El explorador web debe recibir la respuesta grande a través de la red. A continuación, el explorador web debe analizar y mostrar una respuesta HTML grande.

Resolución 2: Habilitar el almacenamiento en búfer de respuesta asp y aumentar el límite de búfer

Puede usar la AspBufferingOn propiedad de metabase de IIS para habilitar o deshabilitar el almacenamiento en búfer en el nivel de aplicación.

Nota:

En IIS 7 y versiones posteriores, puede habilitar o deshabilitar el almacenamiento en búfer de respuesta ASP en el nivel de aplicación mediante el bufferingOn valor de la sección ASP del ApplicationHost.config<System.webserver> archivo o del Web.config archivo.

Para habilitar o deshabilitar el almacenamiento en búfer en el nivel de página, puede usar la Response.Buffer propiedad .

Si debe aumentar el límite de búfer, seleccione un límite de búfer que permita el mayor tamaño de respuesta conocido. Si no conoce el tamaño de respuesta más grande de antemano, puede aumentar el límite del búfer a un valor grande durante las pruebas. Una vez finalizadas las pruebas, use el valor más grande que aparece en el campo sc-bytes del archivo de registro de IIS para la respuesta que se genera para la página.

Para aumentar el límite de almacenamiento en búfer en IIS 7 y versiones posteriores, siga estos pasos:

  1. Seleccione Inicio, ejecutar, escriba cmdy, a continuación, seleccione Aceptar.

  2. Escriba el cd /d %systemdrive%\inetpub\adminscripts comando y, a continuación, presione Entrar.

  3. Escriba el cscript.exe adsutil.vbs SET w3svc/aspbufferinglimit LimitSize comando y, a continuación, presione Entrar.

    Nota:

    LimitSize representa el tamaño del límite de almacenamiento en búfer en bytes. Por ejemplo, el número 67108864 establece el tamaño del límite de almacenamiento en búfer en 64 MB.

Para confirmar que el límite de búfer está establecido correctamente, siga estos pasos:

  1. Seleccione Inicio, ejecutar, escriba cmdy, a continuación, seleccione Aceptar.
  2. Escriba el cd /d %systemdrive%\inetpub\adminscripts comando y, a continuación, presione Entrar.
  3. Escriba el cscript.exe adsutil.vbs GET w3svc/aspbufferinglimit comando y, a continuación, presione Entrar.

Más información

Cuando se usa el Response.BinaryWrite método y el almacenamiento en búfer de respuesta ASP está deshabilitado, solo se pueden enviar 4 MB de datos al cliente a menos que se establezca explícitamente la propiedad de límite de almacenamiento en búfer de la página. De forma predeterminada, el valor de la bufferLimit propiedad en IIS 7 o una versión posterior es de 4.194.304 bytes.

Además, se produce un error en la BinaryWrite() API si la respuesta al cliente es mayor que el valor límite del búfer, aunque el almacenamiento en búfer de respuesta ASP esté desactivado.

Nota:

Se recomienda habilitar el almacenamiento en búfer de respuesta asp. El almacenamiento en búfer de respuesta asp aumenta el rendimiento de una aplicación web.