Jak ustawić maxAllowedContentLength na 500MB podczas pracy z IIS7?

98

Zmieniłem maxAllowedContentLength na

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

W moim pliku web.config, ale podczas pracy w IIS7 pojawia się ten błąd:

Atrybut „maxAllowedContentLength” jest nieprawidłowy. Nieprawidłowa liczba całkowita bez znaku

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

ale kiedy uruchamiam serwer VS, działa normalnie bez żadnych błędów.

Jak skonfigurować witrynę internetową, aby umożliwić przesyłanie plików o rozmiarze 500 MB bez tego problemu w usługach IIS7?

Amr Elgarhy
źródło
1
5024000000 (pozwól, że dodam separatory tysięcy) 5.024.000.000 jest większe niż maksymalna liczba całkowita bez znaku 4.294.967.295, szukasz zamiast tego 502.400.000 jako wartości w konfiguracji ur (bez separatorów tysięcy)
Lennart

Odpowiedzi:

97

Zgodnie z MSDN maxAllowedContentLength ma typ uint, jego maksymalna wartość to 4294967295 bajtów = 3,99 GB

Więc powinno działać dobrze.

Zobacz także artykuł „Limity żądań” . Czy usługi IIS zwracają jeden z tych błędów, gdy odpowiednia sekcja nie jest w ogóle skonfigurowana?

Zobacz też: Przekroczono maksymalną długość żądania

abatishchev
źródło
więc ta wartość mam 5024000000 jest przez GB ?!
Amr Elgarhy
17
5024000000> 4294967295
Sam
2
500MB = 524288000, czyli teraz mniej niż 4294967295
Amr Elgarhy
149

Limit żądań w .Net można skonfigurować z dwóch właściwości jednocześnie:

Pierwszy

  • Web.Config/system.web/httpRuntime/maxRequestLength
  • Jednostka miary: kilobajty
  • Wartość domyślna 4096 KB (4 MB)
  • Maks. wartość 2147483647 KB (2 TB)

druga

  • Web.Config/system.webServer/security/requestFiltering/requestLimits/maxAllowedContentLength (w bajtach)
  • Jednostka miary: bajty
  • Wartość domyślna 30000000 bajtów (28,6 MB)
  • Maks. wartość 4294967295 bajtów (4 GB)

Bibliografia:

Przykład:

<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
źródło
4
Bardzo pomocny, jednak uważam, że maksymalna wartość maxAllowedContentLength to z grubsza 4 GB, a nie 4 TB
Snicklefritz
Artykuł mówi „Określa maksymalną długość treści w żądaniu w bajtach”. Oznacza, że ​​oba klucze konfiguracyjne używają bajtów, co powoduje, że maksymalny rozmiar żądania jest taki sam, 4 GB.
abatishchev
12

IIS v10 (ale powinno to być to samo również dla IIS 7.x)

Szybki dodatek dla osób poszukujących odpowiednich wartości maksymalnych

Max dla maxAllowedContentLengthto: UInt32.MaxValue 🡒 4294967295 bytes:~4GB

Max dla maxRequestLengthto: 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>
Legendy
źródło