it-swarm.it

La lunghezza massima della richiesta è stata superata.

Ricevo l'errore La lunghezza massima richiesta è stata superata quando sto cercando di caricare un video nel mio sito.

Come posso risolvere questo?

962
Surya sasidhar

Se si utilizza IIS per ospitare l'applicazione, la dimensione del file di caricamento predefinito è 4 MB. Per aumentarlo, usa questa sezione sotto il tuo web.config -

<configuration>
    <system.web>
        <httpRuntime maxRequestLength="1048576" />
    </system.web>
</configuration>

Per IIS7 e versioni successive, è inoltre necessario aggiungere le righe seguenti:

 <system.webServer>
   <security>
      <requestFiltering>
         <requestLimits maxAllowedContentLength="1073741824" />
      </requestFiltering>
   </security>
 </system.webServer>

Nota :

  • maxRequestLengthNAME _ è misurato in kilobyte
  • maxAllowedContentLengthNAME _ è misurato in byte

ecco perché i valori differiscono in questo esempio di configurazione. (Entrambi equivalgono a 1 GB)

1832
Sachin Shanbhag

Non penso che sia stato menzionato qui, ma per farlo funzionare, ho dovuto fornire entrambi questi valori nel web.config:

In system.web

<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />

E in system.webServer

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

IMPORTANT: entrambi questi valori devono corrispondere. In questo caso, il mio caricamento massimo è 1024 megabyte.

maxRequestLength has 1048576 KILOBYTES e maxAllowedContentLength ha 1073741824 BYTES .

So che è ovvio, ma è facile trascurare.

527
Karl

Potrebbe essere utile notare che potresti voler limitare questa modifica all'URL che ti aspetti di utilizzare per il caricamento piuttosto che all'intero sito.

<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>
184
Nick Albrecht

E nel caso qualcuno stia cercando un modo per gestire questa eccezione e mostrare all'utente una spiegazione significativa (qualcosa del tipo "Stai caricando un file troppo grande"):

//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
    }
}

(Richiesto ASP.NET 4 o successivo)

39
Serge Shultz

La dimensione massima della richiesta è, per impostazione predefinita, 4mb (4096 KB)

Questo è spiegato qui: http://support.Microsoft.com/default.aspx?scid=kb;EN-US;295626

L'articolo sopra spiega anche come risolvere questo problema :)

26
Dave

C'è un elemento in web.config per configurare la dimensione massima del file caricato:

<httpRuntime 
    maxRequestLength="1048576"
  />
18
ema

Se non è possibile aggiornare i file di configurazione ma controllare il codice che gestisce i caricamenti dei file, utilizzare HttpContext.Current.Request.GetBufferlessInputStream(true).

Il valore true per il parametro disableMaxRequestLength indica al framework di ignorare i limiti di richiesta configurati.

Per la descrizione dettagliata visitare https://msdn.Microsoft.com/en-us/library/hh195568 (v = vs.110) .aspx

16
Sergey Tarasov

maxRequestLength (lunghezza in KB) Qui come es. Ho preso 1024 (1 MB) maxAllowedContentLength (lunghezza in byte) dovrebbe essere uguale a maxRequestLength (1048576 byte = 1 MB).

<system.web>
   <httpRuntime maxRequestLength="1024" executionTimeout="3600" />
</system.web>

<system.webServer>
   <security>
      <requestFiltering>
          <requestLimits maxAllowedContentLength="1048576"/>
      </requestFiltering>
   </security>
</system.webServer>
8
UniCoder

Per riassumere tutte le risposte in un unico posto:

<system.web>
  <httpRuntime targetFramework="4.5.2" maxRequestLength="1048576"/>
</system.web>

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxAllowedContentLength="1073741824" />
    </requestFiltering>
  </security>
</system.webServer>

Regole:

  • il valore maxRequestLength (espresso in kb) deve corrispondere a maxAllowedContentLength (espresso in byte).
  • il più delle volte la tua sezione system.web potrebbe già contenere un "httpRuntime". imposta il targetFramework sulla versione di .net utilizzata.

Gli appunti:

  • il valore predefinito per maxRequestLength è 4096 (4mb). il valore massimo è 2.147.483.647
  • il valore predefinito per maxAllowedContentLength è 30.000.000 (circa 30mb). il valore massimo è 4.294.967.295

maggiori informazioni MSDN

6
BernieSF

Mi ha infastidito anche per giorni. Ho modificato il file Web.config ma non ha funzionato. Si è scoperto che ci sono due file Web.config nel mio progetto, e dovrei modificare quello nella directory ROOT, non gli altri. Spero che questo sarebbe utile.

6
NiaoBlush

Se hai una richiesta per accedere a un'applicazione nel sito, assicurati di impostare maxRequestLength nel web.config di root. Il maxRequestLength nel web.config dell'applicazione sembra essere ignorato.

5
mhenry1384

Sono rimasto incastrato dal fatto che il nostro file web.config ha più sezioni system.web: ha funzionato quando ho aggiunto <httpRuntime maxRequestLength = "1048576" /> alla sezione system.web che al livello di configurazione.

1
Graham Laight

Ho dovuto modificare il file C:\Windows\System32\inetsrv\config\applicationHost.config e aggiungere <requestLimits maxAllowedContentLength="1073741824" /> alla fine del ...

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

sezione.

Come per Questo articolo del supporto Microsoft

1
HyperActive