261 votes

Comment augmenter la taille maximale des fichiers à télécharger en ASP.NET ?

J'ai un formulaire qui accepte le téléchargement d'un fichier en ASP.NET. J'ai besoin d'augmenter la taille maximale de téléchargement pour dépasser les 4 Mo par défaut.

J'ai trouvé dans certains endroits faisant référence au code ci-dessous à msdn .

[ConfigurationPropertyAttribute("maxRequestLength", DefaultValue = )]

Aucune des références ne décrit réellement comment l'utiliser, et j'ai essayé plusieurs choses sans succès. Je ne veux modifier cet attribut que pour certaines pages qui demandent le téléchargement de fichiers.

Est-ce la bonne voie à suivre ? Et comment dois-je l'utiliser ?

0 votes

Êtes-vous sûr qu'il s'agit d'une limitation du code, et non d'une limitation de l'hôte ? IIS a également une limite.

0 votes

J'étais presque sûr qu'il s'agissait d'une limitation de .Net. La réponse ci-dessous a fonctionné pour moi.

438voto

Eric Rosenberger Points 1641

Ce paramètre se trouve dans votre fichier web.config. Il affecte l'application entière, cependant... Je ne pense pas que vous puissiez le définir par page.

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

"xxx" est en KB. La valeur par défaut est 4096 (= 4 MB).

8 votes

Cela m'a permis de travailler sur l'ensemble du site. Je l'ai fixé à 10240 (ou 10 MB) pour le moment. Merci !

14 votes

Voir ma réponse si vous utilisez IIS7+ et que cela ne fonctionne pas.

0 votes

Est-il possible de limiter cela à un seul contrôleur ?

199voto

4imble Points 3494

Pour IIS 7+, en plus d'ajouter le paramètre httpRuntime maxRequestLength, vous devez également ajouter :

  <system.webServer>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="52428800" /> <!--50MB-->
      </requestFiltering>
    </security>
  </system.webServer>

Ou dans IIS (7) :

  • Sélectionnez le site Web que vous souhaitez autoriser à accepter les téléchargements de fichiers volumineux.
  • Dans la fenêtre principale, double-cliquez sur "Filtrage des demandes".
  • Sélectionnez "Modifier les paramètres des fonctions".
  • Modifier la "Longueur maximale autorisée du contenu (octets)".

0 votes

J'ai oublié les kilo-octets :p

11 votes

Vous devrez probablement définir les deux maxRequestLength y maxAllowedContentLength pour le faire fonctionner... voir stackoverflow.com/questions/6327452/

7 votes

@AndrewMyhre maxAllowedContentLength est en octets, pas en Ko. La documentation de Microsoft indique que la valeur par défaut est de 30 Mo.

20voto

ben Points 1469

Je crois que cette ligne dans le Web.config définira la taille maximale de téléchargement :

<system.web>

        <httpRuntime maxRequestLength="600000"/>
</system.web>

0 votes

Après avoir passé la moitié de la journée, voilà ce qui m'a aidé ! !! Merci beaucoup ! !!

0 votes

Un fichier de n'importe quelle taille peut être téléchargé si je configure votre code, n'est-ce pas ? Cela fonctionnera-t-il aussi pour IIS7 ? Je vous remercie de votre aide.

7voto

Stefan Points 7940

Si c'est Windows 2003 / IIS 6.0, vérifiez AspMaxRequestEntityAllowed = "204800" dans le fichier. metabase.xml situé dans le dossier C:\windows\system32\inetsrv\

La valeur par défaut de "204800" (~205Kb) est à mon avis trop faible pour la plupart des utilisateurs. Changez simplement la valeur pour ce que vous pensez être le maximum.

Si vous ne pouvez pas enregistrer le fichier après l'avoir modifié, vous devez soit arrêter le serveur ISS, soit activer le serveur pour permettre la modification du fichier :

alt text
(source : <a href="http://blogs.itmaskinen.se/image.axd?picture=WindowsLiveWriter/Request.BinaryReadFailedwindows2003IIS.0_BC5A/image_2.png" rel="nofollow noreferrer">itmaskinen.se </a>)

Edit : Je n'ai pas lu la question correctement (comment définir le maxrequest dans webconfig). Mais cette information peut intéresser d'autres personnes, de nombreuses personnes qui ont déplacé leurs sites d'un serveur win2000 vers win2003 et qui avaient une fonction d'envoi qui fonctionnait et qui ont soudainement obtenu le message suivant Échec de la lecture binaire de la demande l'erreur s'en servira. Je laisse donc la réponse ici.

6voto

Max Zerbini Points 1731

J'ai le même problème dans un serveur IIS win 2008, j'ai résolu le problème en ajoutant cette configuration dans le web.config :

<system.web>
    <httpRuntime executionTimeout="3600" maxRequestLength="102400" 
     appRequestQueueLimit="100" requestValidationMode="2.0"
     requestLengthDiskThreshold="10024000"/>
</system.web>

El requestLengthDiskThreshold par défaut est de 80000 bytes, ce qui est trop petit pour mon application. requestLengthDiskThreshold est mesuré en bytes et maxRequestLength est exprimé en Kbytes.

Le problème est présent si l'application utilise une System.Web.UI.HtmlControls.HtmlInputFile composant du serveur. L'augmentation du requestLengthDiskThreshold est nécessaire pour le résoudre.

1 votes

Selon msdn.microsoft.com/fr/us/library/e1f13641(v=vs.100).aspx "Spécifie la limite du seuil de mise en mémoire tampon du flux d'entrée, en kilo-octets. Cette valeur ne doit pas dépasser l'attribut maxRequestLength." donc il doit être au maximum égal à la longueur de la requête ?

0 votes

Oui @Jeff, la valeur de requestLengthDiskThreshold devrait être inférieure à maxRequestLength, mais la première est exprimée en octets. Si requestLengthDiskThreshold est supérieur à maxRequestLength, une ConfigurationErrorsException devrait être levée, afin que vous puissiez tester la valeur correcte par vous-même. Voir forums.asp.net/t/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X