Was bekommt Priorität, maxRequestLength oder maxAllowedContentLength?

127

Beim Ändern der maximal zulässigen Dateigröße für den Upload bin ich auf diese beiden Einstellungen gestoßen.

In der Datei sytem.web haben Sie den http-Laufzeitknoten mit maxRequestLength . Im system.webServer haben Sie die requestLimits mit maxAllowedContentLength .

Was hat nun Vorrang vor dem anderen? Und müssen wir beide einstellen oder reicht der letzte (der für IIS7) aus?

Floris Devriendt
quelle

Antworten:

196

maxRequestLength gibt die maximale Anforderungsgröße an, die von ASP.NET unterstützt wird, während maxAllowedContentLength die maximale Länge des Inhalts einer von IIS unterstützten Anforderung angibt. Sie müssen also beide festlegen, um große Dateien hochzuladen: Die kleinere "hat Priorität".

(Ich habe dies von http://forums.iis.net/t/1169846.aspx abgeholt - Gutschrift, wo es fällig ist.)

Sie können festlegen, dass beide lokal für eine bestimmte Site oder sogar für einen Ordner innerhalb einer Site sind, indem Sie die entsprechende Datei web.config bearbeiten. Wenn die Dateilänge (also Anfrage) kleiner als maxAllowedContentLength, aber größer als maxRequestLength ist, erhält der Benutzer Ihre Standardfehlerseite (ASPX), falls vorhanden. Wenn es umgekehrt ist, erhält er stattdessen eine IIS-Fehlerseite. Aus diesem Grund möchten Sie möglicherweise maxAllowedContentLength auf einen sehr großen Wert setzen (nur für diese Website / diesen Ordner) und dann den Grenzwert maxRequestLength festlegen.

Denken Sie zum Schluss daran, dass sich maxRequestLength in KB befindet, während sich maxAllowedContentLength in BYTES befindet!

Ed Graham
quelle
Ich habe 3 Upload-Steuerelemente auf meiner Seite, wobei das Upload-Steuerelement ein Limit von 50 MB hat. Ich lade also insgesamt 150 MB auf einmal hoch. Meine Konfiguration lautet maxAllowedContentLength = "51200000" & executeTimeout = "1200" & maxRequestLength = "51200". welche länge soll ich hier ändern. Bitte vorschlagen.
Nirav Vasoya
21

Die kurze und süße Antwort ist, dass die kleinere der beiden Vorrang haben wird. Ein Tipp: Meiner Meinung nach ist es ratsam, maxRequestLength auf den kleineren Wert festzulegen, da Sie im Application_Error-Ereignis Ihrer Global.asax eine Ausnahme abfangen können, falls diese überschritten wird. Wenn Sie maxAllowedContentLength überschreiten, wird IIS zuerst anstelle von ASP.NET damit umgehen, was es schwieriger macht, mit Code umzugehen.

joelmdev
quelle