web-dev-qa-db-fra.com

Longueur maximale de la demande dépassée.

Je reçois le message d'erreur Longueur maximale de la demande dépassée lorsque j'essaie de télécharger une vidéo sur mon site.

Comment puis-je réparer ça?

981
Surya sasidhar

Si vous utilisez IIS pour héberger votre application, la taille de fichier de téléchargement par défaut est de 4 Mo. Pour l'augmenter, veuillez utiliser la section ci-dessous dans votre web.config -

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

Pour IIS7 et les versions ultérieures, vous devez également ajouter les lignes ci-dessous:

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

Note:

  • maxRequestLength est mesurée en kilo-octets
  • maxAllowedContentLength est mesuré en octets

c'est pourquoi les valeurs diffèrent dans cet exemple de configuration. (Les deux équivalent à 1 Go)

1862
Sachin Shanbhag

Je ne pense pas que cela ait été mentionné ici, mais pour que cela fonctionne, je devais fournir ces deux valeurs dans le fichier web.config:

Dans system.web

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

Et dans system.webServer

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

IMPORTANT: Ces deux valeurs doivent correspondre. Dans ce cas, mon envoi maximal est de 1024 mégaoctets.

maxRequestLength a 1048576 KILOBYTES et maxAllowedContentLength a 1073741824 BYTES .

Je sais que c'est évident, mais c'est facile à négliger.

531
Karl

Il peut être intéressant de noter que vous voudrez peut-être limiter cette modification à l'URL que vous comptez utiliser pour le téléchargement plutôt qu'à l'ensemble de votre site.

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

Et juste au cas où quelqu'un chercherait un moyen de gérer cette exception et d'afficher une explication significative à l'utilisateur (quelque chose comme "Vous téléchargez un fichier trop volumineux"):

//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 ou version ultérieure requis)

41
Serge Shultz

La taille maximale de la demande est de 4 Mo (4096 Ko) par défaut.

Ceci est expliqué ici: http://support.Microsoft.com/default.aspx?scid=kb;EN-US;295626

L'article ci-dessus explique également comment résoudre ce problème :)

26
Dave

Il y a un élément dans web.config pour configurer la taille maximale du fichier téléchargé:

<httpRuntime 
    maxRequestLength="1048576"
  />
18
ema

Si vous ne pouvez pas mettre à jour les fichiers de configuration mais contrôlez le code qui gère les téléchargements de fichiers, utilisez HttpContext.Current.Request.GetBufferlessInputStream(true).

Le paramètre true de disableMaxRequestLength indique au framework d'ignorer les limites de demandes configurées.

Pour une description détaillée, visitez le site https://msdn.Microsoft.com/en-us/library/hh195568 (v = vs.110) .aspx

16
Sergey Tarasov

maxRequestLength (longueur en Ko) Ici, comme ex. J'ai pris 1024 (1 Mo) maxAllowedContentLength (longueur en octets) devrait être identique à votre maxRequestLength (1048576 octets = 1 Mo).

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

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

Pour résumer toutes les réponses en un seul endroit:

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

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

Règles:

  • la valeur maxRequestLength (exprimée en kb) doit correspondre à maxAllowedContentLength (exprimée en octets).
  • la plupart du temps, votre section system.web contient déjà un "httpRuntime". définissez votre targetFramework sur la version de votre .net utilisée.

Remarques:

  • la valeur par défaut pour maxRequestLength est 4096 (4mb). La valeur maximale est 2 147 483 647.
  • la valeur par défaut de maxAllowedContentLength est de 30 000 000 (environ 30 Mo). La valeur maximale est 4 294 967 295.

plus d'infos MSDN

7
BernieSF

Cela m'a dérangé pendant des jours aussi. J'ai modifié le fichier Web.config mais cela n'a pas fonctionné. Il s'est avéré qu'il y a deux fichiers Web.config dans mon projet, et je devrais modifier celui du répertoire ROOT, pas les autres. J'espère que cela serait utile.

6
NiaoBlush

Si une demande est envoyée à une application du site, assurez-vous de définir maxRequestLength dans le fichier racine web.config. La valeur maxRequestLength dans le fichier web.config de l'application semble être ignorée.

5
mhenry1384

Le fait que notre fichier web.config comporte plusieurs sections system.web m'a fait trébucher: cela a fonctionné lorsque j'ai ajouté <httpRuntime maxRequestLength = "1048576" /> à la section system.web au niveau de la configuration.

1
Graham Laight

Je devais éditer le fichier C:\Windows\System32\inetsrv\config\applicationHost.config et ajouter <requestLimits maxAllowedContentLength="1073741824" /> à la fin de la ...

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

section.

Selon Cet article de support Microsoft

1
HyperActive