¿Cómo establecer maxAllowedContentLength en 500 MB mientras se ejecuta en IIS7?

94

Cambié maxAllowedContentLength a

<security>
    <requestFiltering>
        <requestLimits maxAllowedContentLength="5024000000" />
    </requestFiltering>
</security>

En mi web.config, pero cuando se ejecuta en IIS7, aparece este error:

El atributo 'maxAllowedContentLength' no es válido. No es un entero sin signo válido

http://i.stack.imgur.com/u1ZFe.jpg

pero cuando ejecuto en el servidor VS, se ejecuta normalmente sin errores.

¿Cómo configurar mi sitio web para permitir la carga de archivos con un tamaño de 500 MB, sin este problema en IIS7?

Amr Elgarhy
fuente
1
5024000000 (déjame agregar miles de separadores) 5.024.000.000 es más grande que el máximo int sin firmar 4.294.967.295, estás buscando 502.400.000 como el valor en tu configuración en su lugar (sin los miles de separadores)
Lennart

Respuestas:

97

Según MSDN maxAllowedContentLength has type uint, su valor máximo es 4.294.967.295 bytes = 3,99 gb

Entonces debería funcionar bien.

Consulte también el artículo Límites de solicitud . ¿IIS devuelve uno de estos errores cuando la sección correspondiente no está configurada en absoluto?

Consulte también: Se excedió la longitud máxima de la solicitud

abatishchev
fuente
Entonces, ¿este valor que tengo 5024000000 es en gb?
Amr Elgarhy
17
5024000000> 4294967295
Sam
2
500 MB = 524288000, que ahora es menos que 4294967295
Amr Elgarhy
144

El límite de solicitudes en .Net se puede configurar a partir de dos propiedades juntas:

primero

  • Web.Config/system.web/httpRuntime/maxRequestLength
  • Unidad de medida: kilobytes
  • Valor predeterminado 4096 KB (4 MB)
  • Max. valor 2147483647 KB (2 TB)

Segundo

  • Web.Config/system.webServer/security/requestFiltering/requestLimits/maxAllowedContentLength (en bytes)
  • Unidad de medida: bytes
  • Valor predeterminado 30000000 bytes (28,6 MB)
  • Max. valor 4294967295 bytes (4 GB)

Referencias:

Ejemplo:

<location path="upl">
   <system.web>
     <!--The default size is 4096 kilobytes (4 MB). MaxValue is 2147483647 KB (2 TB)-->
     <!-- 100 MB in kilobytes -->
     <httpRuntime maxRequestLength="102400" />
   </system.web>
   <system.webServer>
     <security>
       <requestFiltering>          
         <!--The default size is 30000000 bytes (28.6 MB). MaxValue is 4294967295 bytes (4 GB)-->
         <!-- 100 MB in bytes -->
         <requestLimits maxAllowedContentLength="104857600" />
       </requestFiltering>
     </security>
   </system.webServer>
 </location>
Anderson Rissardi
fuente
4
Muy útil, sin embargo, creo que el valor máximo para maxAllowedContentLength es aproximadamente 4 GB, no 4 TB
Snicklefritz
El artículo dice "Especifica la longitud máxima de contenido en una solicitud, en bytes". Significa que ambas claves de configuración usan BYTES, lo que hace que el tamaño máximo de solicitud sea el mismo, 4GB.
abatishchev
10

IIS v10 (pero esto debería ser el mismo también para IIS 7.x)

Adición rápida para personas que buscan valores máximos respectivos

Max para maxAllowedContentLength es: UInt32.MaxValue 🡒 4294967295 bytes:~4GB

Max para maxRequestLength es: Int32.MaxValue🡒 2147483647 bytes:~2GB

web.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
    <!-- ~ 2GB -->
    <httpRuntime maxRequestLength="2147483647" />
  </system.web>
  <system.webServer>
    <security>
      <requestFiltering>
        <!-- ~ 4GB -->
        <requestLimits maxAllowedContentLength="4294967295" />
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>
Leyendas
fuente