Compartir a través de


Se superó el límite de búfer http 500 o respuesta al usar Response.BinaryWrite en IIS

Este artículo le ayuda a resolver el error (se superó el límite de búfer http 500 o respuesta) que se produce cuando se usa el Response.BinaryWrite método en Páginas de Active Server (ASP) para enviar un archivo.

Versión original del producto: Internet Information Services, Páginas active server (ASP)
Número de KB original: 944886

Síntomas

Considere el caso siguiente:

  • Se envía un archivo a un equipo cliente desde un servidor web en el que se instala Internet Information Services (IIS).
  • El método se usa Response.BinaryWrite para enviar el archivo al equipo cliente y la AspBufferingOn propiedad se establece en False.

En este escenario, puede recibir uno de los siguientes mensajes de error en el equipo cliente:

  • 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 ha provocado que el búfer de respuesta supere su límite configurado.

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

ASP_0251_:_80004005|Response_Buffer_Limit_Exceeded

Causa

Este problema se produce porque IIS aplica un valor de búfer de respuesta ASP predeterminado de 4 MB cuando se deshabilita el almacenamiento en búfer de respuesta de 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 no es suficiente, use uno de los métodos siguientes.

Resolución 1: Reducir el tamaño de 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 que se devuelven al cliente no tienen más de 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: Habilitación del almacenamiento en búfer de respuesta de ASP y aumento del 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, puede habilitar o deshabilitar el almacenamiento en búfer de respuesta de ASP en el nivel de aplicación mediante el bufferingOn valor de la sección ASP de <System.webserver> en el ApplicationHost.config archivo o en el 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 tamaño de respuesta conocido más grande. 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. Después de finalizar 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, siga estos pasos:

  1. Seleccione Inicio, Ejecutar, escriba cmd y, a continuación, seleccione Aceptar.

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

  3. Escriba el cscript.exe adsutil.vbs SET w3svc/aspbufferinglimit LimitSize comando y, a continuación, seleccione 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 del búfer se ha establecido correctamente, siga estos pasos:

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

Más información

Cuando se usa el Response.BinaryWrite método y el almacenamiento en búfer de respuesta de ASP está deshabilitado, solo puede 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 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 de límite de búfer aunque se desactive el almacenamiento en búfer de respuesta de ASP.

Nota:

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