J'obtiens l'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?
J'obtiens l'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?
Réponses:
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 cette section ci-dessous dans votre web.config-
<configuration>
<system.web>
<httpRuntime maxRequestLength="1048576" />
</system.web>
</configuration>
Pour IIS7 et supérieur, vous devez également ajouter les lignes ci-dessous:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
</system.webServer>
Remarque :
maxRequestLengthest mesuré en kilo-octetsmaxAllowedContentLengthest mesuré en octets c'est pourquoi les valeurs diffèrent dans cet exemple de configuration. (Les deux équivalent à 1 Go.)
Web.configau lieu de celui à l'intérieur du Viewsdossier
Je ne pense pas que cela ait été mentionné ici, mais pour que cela fonctionne, j'ai dû fournir ces deux valeurs dans le web.config:
Dans system.web
<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
Et en system.webServer
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
IMPORTANT : ces deux valeurs doivent correspondre. Dans ce cas, mon téléchargement maximum est de 1024 mégaoctets.
maxRequestLength a 1048576 KILOBYTES , et maxAllowedContentLength a 1073741824 BYTES .
Je sais que c'est évident, mais c'est facile à ignorer.
web.configfichier racine du projet .
Il convient de noter que vous souhaiterez peut-être limiter cette modification à l'URL que vous prévoyez d'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>
Et juste au cas où quelqu'un chercherait un moyen de gérer cette exception et de montrer une explication significative à l'utilisateur (quelque chose comme "Vous téléchargez un fichier trop gros"):
//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 ou version ultérieure requis)
HttpContext.Current.ClearError()était nécessaire pour permettre Response.Redirect()au bon fonctionnement. En termes de web.configcela fonctionne uniquement avec l' maxRequestLengthattribut de httpRuntime.
onchangeévénement sur le bouton de téléchargement et en comparant la taille du fichier de téléchargement avec la limite de téléchargement maximale.
Si vous ne pouvez pas mettre à jour les fichiers de configuration mais contrôler le code qui gère les téléchargements de fichiers, utilisez HttpContext.Current.Request.GetBufferlessInputStream(true).
La truevaleur du disableMaxRequestLengthparamètre indique au framework d'ignorer les limites de demande configurées.
Pour une description détaillée, visitez https://msdn.microsoft.com/en-us/library/hh195568(v=vs.110).aspx
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:
Remarques:
plus d'informations MSDN
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>
Si vous avez une demande adressée à une application du site, assurez-vous de définir maxRequestLength dans le web.config racine. Le maxRequestLength dans le web.config des applications semble être ignoré.
httpRuntime maxRequestLength="###et requestLimits maxAllowedContentLengthdans une configuration Web au niveau racine, pas au niveau sous-application.
J'ai été trébuché par le fait que notre fichier web.config comporte plusieurs sections system.web: cela a fonctionné lorsque j'ai ajouté <httpRuntime maxRequestLength = "1048576" /> à la section system.web au niveau de la configuration.
J'ai dû éditer le C:\Windows\System32\inetsrv\config\applicationHost.configfichier et l'ajouter <requestLimits maxAllowedContentLength="1073741824" />à la fin du ...
<configuration>
<system.webServer>
<security>
<requestFiltering>
section.
applicationHost.config .
Je peux ajouter à la configuration Web non compilé
<system.web>
<httpRuntime maxRequestLength="1024" executionTimeout="3600" />
<compilation debug="true"/>
</system.web>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1048576"/>
</requestFiltering>
</security>
executionTimeoutattribut n'a rien à voir avec ce qui est demandé, et la compilationbalise non plus.