Wie setze ich die maxAllowedContentLength auf 500 MB, während ich unter IIS7 ausgeführt werde?

93

Ich habe die maxAllowedContentLength in geändert

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

In meiner web.config, aber wenn ich auf IIS7 laufe, erhalte ich folgende Fehlermeldung:

Das Attribut 'maxAllowedContentLength' ist ungültig. Keine gültige vorzeichenlose Ganzzahl

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

aber wenn ich auf dem VS-Server laufe, läuft es normal ohne Fehler.

Wie konfiguriere ich meine Website so, dass Upload-Dateien mit einer Größe von 500 MB ohne dieses Problem auf IIS7 möglich sind?

Amr Elgarhy
quelle
5024000000 (lassen Sie mich tausend Trennzeichen hinzufügen) 5.024.000.000 ist größer als das Maximum unsigned int 4.294.967.295, Sie suchen stattdessen nach 502.400.000 als Wert in Ihrer Konfiguration (ohne die tausend Trennzeichen)
Lennart

Antworten:

97

Laut MSDN maxAllowedContentLength hat Typ uint, sein Maximalwert ist 4.294.967.295 Bytes = 3,99 GB

Also sollte es gut funktionieren.

Siehe auch Artikel Anforderungslimits . Gibt IIS einen dieser Fehler zurück, wenn der entsprechende Abschnitt überhaupt nicht konfiguriert ist?

Siehe auch: Maximale Anforderungslänge überschritten

abatishchev
quelle
Also dieser Wert, den ich habe 5024000000 ist von GB?!
Amr Elgarhy
16
5024000000> 4294967295
Sam
2
500 MB = 524288000, was jetzt weniger als 4294967295 ist
Amr Elgarhy
143

Das Anforderungslimit in .Net kann aus zwei Eigenschaften zusammen konfiguriert werden:

Zuerst

  • Web.Config/system.web/httpRuntime/maxRequestLength
  • Maßeinheit: Kilobyte
  • Standardwert 4096 KB (4 MB)
  • Max. Wert 2147483647 KB (2 TB)

Zweite

  • Web.Config/system.webServer/security/requestFiltering/requestLimits/maxAllowedContentLength (in Bytes)
  • Maßeinheit: Bytes
  • Standardwert 30000000 Bytes (28,6 MB)
  • Max. Wert 4294967295 Bytes (4 GB)

Verweise:

Beispiel:

<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
quelle
4
Sehr hilfreich, aber ich glaube, dass der Maximalwert für maxAllowedContentLength ungefähr 4 GB beträgt, nicht 4 TB
Snicklefritz
Der Artikel sagt "Gibt die maximale Länge des Inhalts in einer Anfrage in Bytes an." Bedeutet, dass beide Konfigurationsschlüssel BYTES verwenden, sodass die maximale Anforderungsgröße 4 GB beträgt.
Abatishchev
9

IIS v10 (dies sollte jedoch auch für IIS 7.x gleich sein)

Schnelle Ergänzung für Personen, die nach entsprechenden Maximalwerten suchen

Max für maxAllowedContentLengthist: UInt32.MaxValue 🡒 4294967295 bytes:~4GB

Max für maxRequestLengthist: 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>
Legenden
quelle