Qui obtient la priorité, maxRequestLength ou maxAllowedContentLength?

127

En modifiant la taille de fichier maximale autorisée pour le téléchargement, je suis tombé sur ces deux paramètres.

Dans sytem.web, vous avez le nœud d' exécution http avec maxRequestLength . Dans le system.webServer, vous avez les requestLimits avec maxAllowedContentLength .

Maintenant, qui a la priorité sur l'autre? Et devons-nous définir les deux ou est-ce que le dernier (celui pour IIS7) est suffisant?

Floris Devriendt
la source

Réponses:

196

maxRequestLength indique la taille de demande maximale prise en charge par ASP.NET, tandis que maxAllowedContentLength spécifie la longueur maximale du contenu dans une demande prise en charge par IIS. Vous devez donc définir les deux pour télécharger des fichiers volumineux: le plus petit "est prioritaire".

(Je l'ai récupéré sur http://forums.iis.net/t/1169846.aspx - crédit là où il est dû.)

Vous pouvez définir les deux pour être local sur un site spécifique ou même un dossier dans un site en modifiant le fichier web.config approprié. Si la longueur du fichier (enfin, request) est inférieure à maxAllowedContentLength mais supérieure à maxRequestLength, l'utilisateur obtiendra votre page d'erreur standard (ASPX), si vous en avez une. Si c'est l'inverse, il obtiendra une page d'erreur IIS à la place. Pour cette raison, vous voudrez peut-être avoir maxAllowedContentLength à une très grande valeur (uniquement pour ce site Web / dossier), puis avoir la valeur limite maxRequestLength.

Enfin, rappelez-vous que maxRequestLength est en Ko alors que maxAllowedContentLength est en BYTES!

Ed Graham
la source
J'ai 3 contrôles de téléchargement dans ma page où le contrôle de téléchargement a une limite de 50 Mo. Donc je télécharge un total de 150 Mo en un seul coup, ma configuration est maxAllowedContentLength = "51200000" & executionTimeout = "1200" & maxRequestLength = "51200". quelle longueur je devrais être changé ici. Veuillez suggérer.
Nirav Vasoya
21

La réponse courte et douce est que le plus petit des deux aura la priorité. Un conseil cependant - à mon avis, il est conseillé de définir maxRequestLength pour être le plus petit des deux car vous pouvez attraper une exception dans l'événement Application_Error de votre Global.asax si elle est dépassée. Si vous dépassez maxAllowedContentLength, IIS le traitera au lieu d'ASP.NET, ce qui le rendra plus difficile à gérer dans le code.

joelmdev
la source