Error superado en HTTP 500 o límite de 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 excedido) que se produce cuando se usa el método Response.BinaryWrite para enviar un archivo.
Versión del producto original: Internet Information Services 7 y versiones posteriores
Número 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, puede recibir 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 de objeto de respuesta 'ASP 0251 : 80004005'
Límite del búfer de respuesta excedido
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 método para enviar el archivo al equipo cliente y la propiedad Response.BinaryWrite se establece en AspBufferingOn False.
Causa
Este problema se produce porque IIS aplica un valor predeterminado de búfer de respuesta páginas Active Server (ASP) de 4 MB cuando el búfer de respuesta ASP está deshabilitado.
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 clientes web. Si este límite es insuficiente, use uno de los métodos siguientes.
Resolución 1: Disminuir el tamaño de la respuesta
Para resolver este problema al usar el método y desactivar el almacenamiento en búfer de ASP, compruebe que los datos devueltos al cliente no son mayores de Response.BinaryWrite 4 MB.
Si la respuesta es mayor que el valor predeterminado de 4 MB, este tamaño suele provocar una mala experiencia del usuario. 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 del búfer
Puede usar la propiedad AspBufferingOn 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 valor de la sección ASP del archivo o bufferingOn <System.webserver> del ApplicationHost.config 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 por adelantado, puede aumentar el límite de 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 7 y versiones posteriores, siga estos pasos:
Seleccione Inicio, Ejecutar, escriba cmd y, a continuación, seleccione Aceptar.
Escriba el
cd /d %systemdrive%\inetpub\adminscriptscomando y, a continuación, presione ENTRAR.Escriba el
cscript.exe adsutil.vbs SET w3svc/aspbufferinglimit LimitSizecomando y, a continuación, presione ENTRAR.Nota
LimitSizerepresenta 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:
- Seleccione Inicio, Ejecutar, escriba cmd y, a continuación, seleccione Aceptar.
- Escriba el
cd /d %systemdrive%\inetpub\adminscriptscomando y, a continuación, presione ENTRAR. - Escriba el
cscript.exe adsutil.vbs GET w3svc/aspbufferinglimitcomando y, a continuación, presione ENTRAR.
Más información
Cuando usa el método y el búfer de respuesta 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 para la Response.BinaryWrite página. De forma predeterminada, el valor de la propiedad en IIS 7 o una versión posterior bufferLimit es de 4.194.304 bytes.
Además, la API produce un error si la respuesta al cliente es mayor que el valor límite del búfer aunque el búfer de respuesta BinaryWrite() 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.