Ich erhalte die Fehlermeldung Maximale Anforderungslänge überschritten, wenn ich versuche, ein Video auf meine Website hochzuladen.
Wie behebe ich das?
Wenn Sie IIS zum Hosten Ihrer Anwendung verwenden, ist die Standardgröße der Upload-Datei 4 MB. Zum Erhöhen verwenden Sie bitte den folgenden Abschnitt in Ihrer web.config -
<configuration>
<system.web>
<httpRuntime maxRequestLength="1048576" />
</system.web>
</configuration>
Für IIS7 und höher müssen Sie auch die folgenden Zeilen hinzufügen:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
</system.webServer>
Anmerkung:
maxRequestLength
wird in Kilobyte gemessenmaxAllowedContentLength
wird in Bytes gemessenaus diesem Grund unterscheiden sich die Werte in diesem Konfigurationsbeispiel. (Beide entsprechen 1 GB)
Ich glaube nicht, dass es hier erwähnt wurde, aber um dies zum Laufen zu bringen, musste ich diese beiden Werte in der web.config angeben:
In system.web
<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
Und in system.webServer
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
IMPORTANT: Diese beiden Werte müssen übereinstimmen. In diesem Fall beträgt mein maximaler Upload 1024 Megabyte.
maxRequestLength hat 1048576 KILOBYTES und maxAllowedContentLength hat 1073741824 BYTES .
Ich weiß, dass es offensichtlich ist, aber es ist leicht zu übersehen.
Es kann erwähnenswert sein, dass Sie diese Änderung auf die URL beschränken möchten, von der Sie erwarten, dass sie für den Upload verwendet wird, und nicht auf Ihre gesamte Website.
<location path="Documents/Upload">
<system.web>
<!-- 50MB in kilobytes, default is 4096 or 4MB-->
<httpRuntime maxRequestLength="51200" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<!-- 50MB in bytes, default is 30000000 or approx. 28.6102 Mb-->
<requestLimits maxAllowedContentLength="52428800" />
</requestFiltering>
</security>
</system.webServer>
</location>
Und nur für den Fall, dass jemand nach einer Möglichkeit sucht, mit dieser Ausnahme umzugehen, und dem Benutzer eine aussagekräftige Erklärung anzeigt (etwa "Sie laden eine zu große Datei hoch"):
//Global.asax
private void Application_Error(object sender, EventArgs e)
{
var ex = Server.GetLastError();
var httpException = ex as HttpException ?? ex.InnerException as HttpException;
if(httpException == null) return;
if(httpException.WebEventCode == WebEventCodes.RuntimeErrorPostTooLarge)
{
//handle the error
Response.Write("Too big a file, dude"); //for example
}
}
(ASP.NET 4 oder höher erforderlich)
Die maximale Anforderungsgröße beträgt standardmäßig 4 MB (4096 KB).
Dies wird hier erklärt: http://support.Microsoft.com/default.aspx?scid=kb;EN-US;295626
Der obige Artikel erklärt auch, wie man dieses Problem behebt :)
In web.config gibt es ein Element, mit dem die maximale Größe der hochgeladenen Datei konfiguriert werden kann:
<httpRuntime
maxRequestLength="1048576"
/>
Wenn Sie die Konfigurationsdateien nicht aktualisieren können, aber den Code für das Hochladen von Dateien steuern möchten, verwenden Sie HttpContext.Current.Request.GetBufferlessInputStream(true)
.
Der Wert true
für den Parameter disableMaxRequestLength
weist das Framework an, konfigurierte Anforderungslimits zu ignorieren.
Eine detaillierte Beschreibung finden Sie unter https://msdn.Microsoft.com/en-us/library/hh195568 (v = vs.110) .aspx
maxRequestLength (Länge in KB) Hier als Beispiel. Ich nahm an, dass 1024 (1 MB) maxAllowedContentLength (Länge in Bytes) gleich Ihrer maxRequestLength sein sollte (1048576 Bytes = 1 MB).
<system.web>
<httpRuntime maxRequestLength="1024" executionTimeout="3600" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1048576"/>
</requestFiltering>
</security>
</system.webServer>
So fassen Sie alle Antworten an einem Ort zusammen:
<system.web>
<httpRuntime targetFramework="4.5.2" maxRequestLength="1048576"/>
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
</system.webServer>
Regeln:
Anmerkungen:
weitere Informationen MSDN
Es hat mich auch tagelang gestört. Ich habe die Datei Web.config geändert, aber es hat nicht funktioniert. Es stellte sich heraus, dass sich in meinem Projekt zwei Web.config-Dateien befinden, und ich sollte die Datei im Verzeichnis ROOT ändern, nicht die anderen. Hoffe das wäre hilfreich.
Wenn Sie eine Anforderung an eine Anwendung auf der Site haben, stellen Sie sicher, dass Sie maxRequestLength in der root-Datei web.config festgelegt haben. Die maxRequestLength in der web.config der Anwendung scheint ignoriert zu werden.
Die Tatsache, dass unsere Datei "web.config" mehrere system.web-Abschnitte enthält, hat mich beeindruckt: Es hat funktioniert, als ich <httpRuntime maxRequestLength = "1048576" /> zum system.web-Abschnitt hinzugefügt habe, der sich auf Konfigurationsebene befindet.
Ich musste die C:\Windows\System32\inetsrv\config\applicationHost.config
-Datei bearbeiten und <requestLimits maxAllowedContentLength="1073741824" />
am Ende des ...
<configuration>
<system.webServer>
<security>
<requestFiltering>
sektion.