Como definir maxAllowedContentLength para 500 MB durante a execução no IIS7?

94

Eu mudei o maxAllowedContentLength para

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

No meu web.config, mas ao executar no IIS7, recebo este erro:

O atributo 'maxAllowedContentLength' é inválido. Não é um inteiro não assinado válido

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

mas quando eu executo no servidor VS ele funciona normalmente sem erros.

Como configurar meu site para permitir o upload de arquivos com tamanho de 500MB, sem esse problema no IIS7?

Amr Elgarhy
fonte
5024000000 (deixe-me adicionar mil separadores) 5.024.000.000 é maior do que o int máximo não assinado 4.294.967.295, você está procurando por 502.400.000 como o valor em sua configuração (sem os mil separadores)
Lennart

Respostas:

97

De acordo com o tipo MSDN , seu valor máximo é 4.294.967.295 bytes = 3,99 gbmaxAllowedContentLengthuint

Portanto, deve funcionar bem.

Consulte também o artigo Limites de solicitação . O IIS retorna um desses erros quando a seção apropriada não está configurada?

Veja também: Comprimento máximo da solicitação excedido

Abatishchev
fonte
então esse valor que eu tenho 5024000000 é por gb ?!
Amr Elgarhy
16
5024000000> 4294967295
Sam,
2
500 MB = 524288000 que agora é inferior a 4294967295
Amr Elgarhy
144

O limite de solicitações em .Net pode ser configurado a partir de duas propriedades juntas:

Primeiro

  • Web.Config/system.web/httpRuntime/maxRequestLength
  • Unidade de medida: kilobytes
  • Valor padrão 4096 KB (4 MB)
  • Máx. valor 2147483647 KB (2 TB)

Segundo

  • Web.Config/system.webServer/security/requestFiltering/requestLimits/maxAllowedContentLength (em bytes)
  • Unidade de medida: bytes
  • Valor padrão 30000000 bytes (28,6 MB)
  • Máx. valor 4294967295 bytes (4 GB)

Referências:

Exemplo:

<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
fonte
4
Muito útil, no entanto, acredito que o valor máximo para maxAllowedContentLength é aproximadamente 4 GB, não 4 TB
Snicklefritz
O artigo diz "Especifica o comprimento máximo do conteúdo em uma solicitação, em bytes.". Significa que ambas as chaves de configuração usam BYTES, tornando o tamanho máximo da solicitação igual, 4 GB.
abatishchev
9

IIS v10 (mas deve ser igual também para IIS 7.x)

Adição rápida para pessoas que procuram os respectivos valores máximos

O máximo para maxAllowedContentLengthé: UInt32.MaxValue 🡒 4294967295 bytes:~4GB

O máximo para maxRequestLengthé: 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>
Legendas
fonte