Maximale Anforderungslänge überschritten.

1049

Ich erhalte die Fehlermeldung Die maximale Anforderungslänge wurde überschritten, wenn ich versuche, ein Video auf meine Website hochzuladen.

Wie behebe ich das?

Surya sasidhar
quelle

Antworten:

1971

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 :

  • maxRequestLengthwird in Kilobyte gemessen
  • maxAllowedContentLengthwird in Bytes gemessen

Aus diesem Grund unterscheiden sich die Werte in diesem Konfigurationsbeispiel. (Beide entsprechen 1 GB.)

Sachin Shanbhag
quelle
7
Vielen Dank, Sachin, und ich habe etwas hinzugefügt wie <httpRuntime maxRequestLength = "32768" executeTimeout = "180" />
Surya sasidhar
11
maxAllowedContentLength muss in Bytes und nicht in Kilobyte angegeben werden, daher sind die angegebenen Beispiele nicht gleichwertig.
Matthew Sharpe
33
Sowohl mit IIS 7.5 als auch mit VS RC 2012 IIS Express musste ich BEIDE festlegen. Die httpRuntime One konfiguriert die maximale Länge von ASP.NET, während requestLimits die maximale Länge von IIS konfiguriert, stackoverflow.com/questions/6327452/… und forums.iis.net/t/1169846.aspx
Despertar
18
Es sei noch einmal darauf hingewiesen, dass die maxAllowedContentLength in Bytes und nicht in Kilobyte angegeben ist. Die beiden Werte sollten nicht dieselbe Zahl sein, da sie nicht dieselbe Maßeinheit sind.
Pandincus
13
Stellen Sie sicher, dass Sie diese Einstellung zur Haupteinstellung Web.configanstelle der Einstellung im ViewsOrdner hinzufügen
Serj Sagan
553

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.

Karl
quelle
5
Für alle, die es betreffen könnten: Diese Antwort funktioniert auch perfekt für IIS-Express (asp.net-Webseiten mit WebMatrix)
VoidKing
5
Ja, das ist eine Antwort, die für mich funktioniert hat, anstatt Sachins Antwort. Es funktioniert auch unter Azure.
Gautam Jain
5
Dies ist definitiv die richtige Antwort ... beide Einträge müssen vorhanden sein. Im Fall von MVC 3 kann es sich in der Projektstammdatei befinden web.config.
Miguel Angelo
2
Eine weitere wichtige Sache ist das 'ExecutionTimeout', das Karl erwähnt
Muhammad Amin
26
Ich musste dies mit einer vorhandenen Zeile kombinieren für: <httpRuntime targetFramework = "4.5" maxRequestLength = "1048576" executeTimeout = "3600" />
Ken Mc
195

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>
Nick Albrecht
quelle
Schöne Lösung, wenn man über den Standort nachdenkt. Aber gibt es einen Standortpfad, wenn Sie mit MVC arbeiten (und daher mit Routen arbeiten)?
Luuk Krijnen
1
Dies wäre eine URL, die der Route entspricht, auf die Ihre Upload-Aktion eingestellt ist. In meinem Fall habe ich einen Dokumenten-Controller mit einer Aktion namens Hochladen, an die ich das Formular sende. In Ihrem Fall wäre es die URL Ihrer Aktion.
Nick Albrecht
Für alle, die diese Antwort mögen, sehen Sie dies .
DontVoteMeDown
2
Alter, du rockst. Tut mir leid, aber meine kleine Abstimmung war nicht genug.
Nicholas Petersen
1
Dies funktioniert mit WebAPI bis einschließlich MVC v5. Sobald Sie mit MVC Core auf ASP.NET Core klicken, sollten Sie verschiedene Optionen für Kestrel festlegen.
Nick Albrecht
44

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)

Serge Shultz
quelle
1
maxAllowedContentLength sollte für die Ausnahmegenerierung höher als (maxRequestLength * 1024) sein.
Der_Meister
Dieser Beitrag gab mir das, was ich brauchte, um den Benutzer zu warnen, aber HttpContext.Current.ClearError()um das Response.Redirect()ordnungsgemäße Arbeiten zu ermöglichen . In Bezug web.configdarauf funktioniert nur mit dem maxRequestLengthAttribut von httpRuntime.
Nrod
Die Überprüfung der Dateigröße und benutzerfreundliche Nachrichten können über JS auf Seitenebene mithilfe eines onchangeEreignisses auf der Schaltfläche zum Hochladen und Vergleichen der Größe der Upload-Datei mit dem maximalen Upload-Limit erfolgen.
Alfred Wallace
29

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 :)

Dave
quelle
4
Der Link leitet mich zur Microsoft Support-Homepage weiter
Bishop
1
Vielleicht stimmte etwas nicht. Der Link leitet hier weiter
gofr1
22

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 trueWert für den disableMaxRequestLengthParameter 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

Sergey Tarasov
quelle
FANTASTISCH, wie hat die Top-Antwort> 1600 Stimmen, und das sind nur 5? Das ist großartig, denn so oft ist es nur eine einzige Aktion, bei der wir dies wollen. Außerdem keine Probleme mit anderen Einstellungen usw.
Nicholas Petersen
Das habe ich gesucht.
Chris Catignani
20

In web.config gibt es ein Element zum Konfigurieren der maximalen Größe der hochgeladenen Datei:

<httpRuntime 
    maxRequestLength="1048576"
  />
ema
quelle
11

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:

  • Der Wert für maxRequestLength (ausgedrückt in kb) muss mit maxAllowedContentLength (ausgedrückt in Byte) übereinstimmen.
  • Meistens enthält Ihr system.web-Abschnitt bereits eine "httpRuntime". Stellen Sie Ihr targetFramework auf die verwendete Version Ihres .net ein.

Anmerkungen:

  • Der Standardwert für maxRequestLength ist 4096 (4 MB). Der Maximalwert beträgt 2.147.483.647
  • Der Standardwert für maxAllowedContentLength ist 30.000.000 (ca. 30 MB). Der Maximalwert beträgt 4.294.967.295

Weitere Informationen MSDN

BernieSF
quelle
8

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>
UniCoder
quelle
6

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 mein Projekt zwei Web.config-Dateien enthält, und ich sollte die eine im ROOT- Verzeichnis ändern , nicht die anderen. Hoffe das wäre hilfreich.

NiaoBlush
quelle
5

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.

mhenry1384
quelle
Wenn ich dies mehr als einmal positiv bewerten könnte, würde ich es tun. Dies verschwendete einen Tag meines Lebens. Wenn Sie eine virtuelle dir-Unteranwendung haben, müssen Sie das httpRuntime maxRequestLength="###und requestLimits maxAllowedContentLengthin eine Webkonfiguration auf der Stammebene und nicht auf der Unteranwendungsebene einfügen.
Nickvans
1

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.

Graham Laight
quelle
1

Ich musste die C:\Windows\System32\inetsrv\config\applicationHost.configDatei bearbeiten und <requestLimits maxAllowedContentLength="1073741824" />am Ende der ...

<configuration>
    <system.webServer>
        <security>
            <requestFiltering>

Sektion.

Gemäß diesem Microsoft - Support - Artikel

HyperActive
quelle
web.config aus Ihrem eigenen Projekt sollte diese überschreiben, daher sehe ich keine Notwendigkeit, Änderungen vorzunehmen applicationHost.config.
Bvgheluwe
-3

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>
Cesar Miguel
quelle
1
Das executionTimeoutAttribut hat nichts mit dem zu tun, was gefragt wird, und das compilationTag auch nicht.
Mathias Lykkegaard Lorenzen