Cuando estamos enviando ficheros grandes desde ASP, hay que tener en cuenta que el IIS tiene por defecto un límite de buffer de respuesta de 4MB. En caso de superar ese límite, veríamos el error «Response buffer limit exceeded» (Límite de búfer de respuesta superado).
Si tenéis problemas con este límite, una solución puede ser utilizar el objeto ADODB.Stream para ir leyendo y enviando el archivo en trocitos:
Response.buffer = true Set objStream = Server.CreateObject("ADODB.Stream") objStream.Type = 1 objStream.Open objStream.LoadFromFile nombreFichero while not objstream.EOS Response.BinaryWrite(objStream.Read(1024*256)) response.flush wend objStream.Close Set objStream = Nothing
La otra solución, aunque menos recomendable por lo general, puede ser incrementar el límite por defecto de 4MB del buffer de respuesta del IIS. Para ello se pueden seguir las siguientes instrucciones:
- Abrimos una línea de comandos. Para ello vamos a Inicio -> Ejecutar y escribimos cmd.
- A continuación, escribimos el siguiente comando para dirigirnos a la ruta donde se encuentran los scripts de administraión del IIS:
CD /d %systemdrive%\inetpub\adminscripts
- Por último, escribimos lo siguiente:
cscript.exe adsutil.vbs SET w3svc/aspbufferinglimit LimitSize
Donde LimitSize es el tamaño en bytes del buffer que queremos modificar. Por ejemplo el valor 10485760 equivale a 10MB.
- Para confirmar que el tamaño del buffer se ha modificado correctamente se puede utilizar el siguiente comando:
cscript.exe adsutil.vbs GET w3svc/aspbufferinglimit
Our Score