Ich erhalte die Fehlermeldung Die maximale Anforderungslänge wurde überschritten, wenn ich versuche, ein Video auf meine Website hochzuladen.
Wie behebe ich das?
Ich erhalte die Fehlermeldung Die maximale Anforderungslänge wurde überschritten, wenn ich versuche, ein Video auf meine Website hochzuladen.
Wie behebe ich das?
Antworten:
Wenn Sie IIS zum Hosten Ihrer Anwendung verwenden, beträgt die Standardgröße der Upload-Datei 4 MB. Um es zu erhöhen, verwenden Sie bitte diesen Abschnitt in Ihrem web.config
-
<configuration>
<system.web>
<httpRuntime maxRequestLength="1048576" />
</system.web>
</configuration>
Für IIS7 und höher müssen Sie außerdem die folgenden Zeilen hinzufügen:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
</system.webServer>
Hinweis :
maxRequestLength
wird in Kilobyte gemessenmaxAllowedContentLength
wird in Bytes gemessen Aus diesem Grund unterscheiden sich die Werte in diesem Konfigurationsbeispiel. (Beide entsprechen 1 GB.)
Web.config
anstelle der Einstellung im Views
Ordner hinzufügen
Ich glaube nicht, dass es hier erwähnt wurde, aber um dies zum Laufen zu bringen, musste ich beide Werte in der web.config angeben:
Im system.web
<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
Und in system.webServer
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
WICHTIG : Beide 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.
web.config
.
Es kann erwähnenswert sein, dass Sie diese Änderung möglicherweise auf die URL beschränken möchten, die Sie für den Upload verwenden möchten, 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, diese Ausnahme zu behandeln und dem Benutzer eine aussagekräftige Erklärung zu zeigen (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 (((System.Web.HttpException)httpException.InnerException).WebEventCode == System.Web.Management.WebEventCodes.RuntimeErrorPostTooLarge)
{
//handle the error
Response.Write("Too big a file, dude"); //for example
}
}
(ASP.NET 4 oder höher erforderlich)
HttpContext.Current.ClearError()
um das Response.Redirect()
ordnungsgemäße Arbeiten zu ermöglichen . In Bezug web.config
darauf funktioniert nur mit dem maxRequestLength
Attribut von httpRuntime
.
onchange
Ereignisses auf der Schaltfläche zum Hochladen und Vergleichen der Größe der Upload-Datei mit dem maximalen Upload-Limit erfolgen.
Die maximale Anforderungsgröße beträgt standardmäßig 4MB (4096 KB)
Dies wird hier erklärt .
Der obige Artikel erklärt auch, wie man dieses Problem behebt :)
Wenn Sie keine Konfigurationsdateien aktualisieren können, aber den Code für das Hochladen von Dateien steuern können, verwenden Sie HttpContext.Current.Request.GetBufferlessInputStream(true)
.
Der true
Wert für den disableMaxRequestLength
Parameter weist das Framework an, konfigurierte Anforderungslimits zu ignorieren.
Eine ausführliche Beschreibung finden Sie unter https://msdn.microsoft.com/en-us/library/hh195568(v=vs.110).aspx
Um alle Antworten an einem Ort zusammenzufassen:
<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
maxRequestLength (Länge in KB) Hier als Bsp. Ich habe 1024 (1 MB) genommen. MaxAllowedContentLength (Länge in Bytes) sollte mit Ihrer maxRequestLength (1048576 Bytes = 1 MB) übereinstimmen.
<system.web>
<httpRuntime maxRequestLength="1024" executionTimeout="3600" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1048576"/>
</requestFiltering>
</security>
</system.webServer>
Wenn Sie eine Anfrage an eine Anwendung auf der Site haben, stellen Sie sicher, dass Sie maxRequestLength im Stammverzeichnis web.config festlegen. Die maxRequestLength in der web.config der Anwendung scheint ignoriert zu werden.
httpRuntime maxRequestLength="###
und requestLimits maxAllowedContentLength
in eine Webkonfiguration auf der Stammebene und nicht auf der Unteranwendungsebene einfügen.
Die Tatsache, dass unsere Datei web.config mehrere system.web-Abschnitte enthält, hat mich überrascht: 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 der ...
<configuration>
<system.webServer>
<security>
<requestFiltering>
Sektion.
applicationHost.config
.
Ich kann unkompiliert zur Konfiguration Web hinzufügen
<system.web>
<httpRuntime maxRequestLength="1024" executionTimeout="3600" />
<compilation debug="true"/>
</system.web>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1048576"/>
</requestFiltering>
</security>
executionTimeout
Attribut hat nichts mit dem zu tun, was gefragt wird, und das compilation
Tag auch nicht.