¿Cómo puedo habilitar la carga de archivos grandes en classic ASP en IIS 7?


Recientemente tuve que conseguir una vieja aplicación ASP trabajando en IIS 7.5 en un servidor W2K8. Casi todo funciona bien, excepto que parece que no puedo conseguir que acepte cargas mayores a ~200kB. Encontré un ajuste, que de lo que puedo entender debería al truco, en el applicationHost.config, establecí el tamaño máximo de la solicitud en 100 MB de esta manera:

<location path="TheNameOfMySite">
    <system.webServer>
        <security>
            <requestFiltering>
                <requestLimits maxAllowedContentLength="104857600" />
            </requestFiltering>
        </security>
    </system.webServer>
</location>

Desafortunadamente, esto parece no hacer nada en absoluto, todavía se niega a aceptar cualquier archivo de más de 200 KB, y en el archivo de registro da este mensaje de error:

ASP_0104_:_80004005|Operation_not_Allowed

Buscando en Google que apunta a aumentar el maxAllowedContentLength como he hecho anteriormente. Así que estoy fresco fuera de ideas, pero seguro de que la multitud inteligente stackoverflow puede resolver esto en menos tiempo del que me tomó para escribir esta pregunta.

Author: Lankymart, 2010-01-01

5 answers

El maxAllowedContentLength controla cuántos datos se pueden enviar en una respuesta. Sin embargo, desea controlar cuánto se puede aceptar en una solicitud. Esto es manejado por el atributo maxRequestEntityAllowed del elemento limits en la sección asp del archivo de configuración. Un ejemplo podría ser:-

<system.webServer>
  <asp>
     <cache diskTemplateCacheDirectory="%SystemDrive%\inetpub\temp\ASP Compiled Templates" />
     <limits scriptTimeout="00:02:00"
        queueConnectionTestTime="00:00:05"
        requestQueueMax="1000"
        maxRequestEntityAllowed="104857600"
        />
  </asp>

Puede configurar esto en el administrador de IIS7 bajo la categoría "Limitar propiedades" en la cuadrícula de propiedades para la característica ASP. Alternativamente, puede usar una línea de comandos: -

appcmd set config /section:asp /limits.maxRequestEntityAllowed:104857600

Nota que extender este valor aumenta la ventana para el ataque DOS donde el atacante envía contenido grande al servidor, así que no se sienta tentado a extender esto más allá de lo que realmente necesita.

 33
Author: AnthonyWJones,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-01 23:56:55

En Windows 2008 - Vaya a Herramientas administrativas - administrador del servidor - expand Roles - expand Webserver-haga clic en IIS - y busque la instancia web, para la que desea cambiar el límite de tamaño del archivo y luego vaya a la opción "ASP" expand "Limit properties" y la propiedad que necesita cambiar es 'Maximum Request Entity Body Limit'. El tamaño del archivo siempre está en bytes, así que use cualquier calculadora en línea para calcular la conversión de bytes a KB o MB.

 6
Author: shoaib suleman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-18 21:14:35

En primer lugar @AnthonyWJones la respuesta fue muy útil pero no resolvió mi problema, de hecho es ligeramente inexacta y por esa razón estoy escribiendo esto.

Las subidas grandes en IIS 6 eran un problema, tenía un valor de configuración del que preocuparse

AspMaxRequestEntityAllowed

El AspMaxRequestEntityAllowed propiedad especifica el número máximo de bytes permitidos en el cuerpo de la entidad de un Petición ASP. Si un encabezado Content-Length está presente y especifica una cantidad de datos mayor que el valor de AspMaxRequestEntityAllowed , IIS devuelve una respuesta de error 403. Esta propiedad está relacionada en función a Máxima petición permitida, pero es específico para la solicitud de ASP. Mientras que puede establecer la propiedad MaxRequestEntityAllowed a 1 MB en el nivel general del Servicio de Publicación en la World Wide Web (Servicio WWW), puede optar por establecer AspMaxRequestEntityAllowed a un valor más bajo, si sabe que sus aplicaciones ASP específicas manejan una cantidad menor de datos.


Con la introducción de IIS 7 y su nuevo sistema de configuración jerárquico basado en XML que utiliza *.archivos de configuración todo se volvió un poco más complicado.

Ahora hay dos ajustes que debe configurar correctamente antes de que la Carga de archivos grandes funcione como espera y ambos vivan en diferentes áreas del configuración.

MaxRequestEntityAllowed

 <configuration>
   <system.webServer>
     <asp>
       <limits maxRequestEntityAllowed="200000" />
     </asp>
   <system.webServer>
 <configuration>

Las Máxima petición permitida atributo especifica el número máximo de bytes permitidos en el cuerpo de entidad de una solicitud ASP. Si un encabezado Content-Length está presente y especifica una cantidad de datos mayor que el valor de maxRequestEntityAllowed , IIS devuelve una respuesta de error HTTP 403.

IMPORTANTE: Configurar la configuración anterior funcionará hasta un punto como verá en el valor predeterminado a continuación, pero una vez que alcance ese valor predeterminado, independientemente de lo que maxRequestEntityAllowed esté establecido, el servidor responderá con la respuesta de error No encontrado HTTP 404. Esto me confundió al principio porque pensé que debía ser mi código el que estaba devolviendo la respuesta de error 404.

MaxAllowedContentLength

 <configuration>
   <system.webServer>
     <security>
       <requestFiltering>
         <requestLimits maxAllowedContentLength="30000000" />
       </requestFiltering>
     </security>
   </system.webServer>
 </configuration>

Especifica el máximo longitud del contenido en una solicitud, en bytes. El valor predeterminado es 30000000, que es de aproximadamente 28.6 MB.

Esta configuración es extremadamente importante ya que define el número máximo de bytes en una solicitud IIS (no una solicitud ASP como el valor de configuración anterior) no tiene nada que ver con la longitud del contenido de la respuesta (como se ha dicho anteriormente) . Independientemente de lo que maxRequestEntityAllowed (que es un ajuste específico asp-classic) se establece para, si maxAllowedContentLength no está configurado o intenta cargar más entonces el valor predeterminado de 28 MB (aprox.) obtendrá una respuesta de error HTTP 404.

Enlaces

 4
Author: Lankymart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:00:10

Para aquellos que no pueden ejecutar el comando appcmd desde CMD, debe cambiar la ruta a C:\windows\system32\inetsrv dado que el comando reside en esa carpeta.

 2
Author: cybersans,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-08 08:19:28

La solución aceptada aquí no funcionó para mí. Primero, no estaba el elemento especificado en mi configuración y no quería arruinar un archivo de configuración.

También probé @shoaib-suleman del solución y tampoco funcionaba. Finalmente, me encontré con la solución que se muestra aquí y funcionó.

  1. Abrir IIS 7 SnapIn

  2. Seleccione el sitio web que desea habilitar para aceptar cargas de archivos grandes.

  3. En la ventana principal, haga doble clic 'Filtrado de solicitudes'

  4. Una vez que se abre la ventana, puede ver en la parte superior una lista de pestañas, por ejemplo: extensiones de nombre de archivo, reglas, segmentos ocultos, etc...

    Independientemente de la pestaña que seleccione, en la ventana principal,haga clic con el botón derecho para mostrar un menú contextual emergente. Seleccione "Editar configuración de funciones" en el menú.

  5. En el formulario que aparece, modifique la " Longitud máxima permitida de contenido (bytes)"

 1
Author: Jeff Reddy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:00:10