web-dev-qa-db-fra.com

Comment augmenter la taille maximale du fichier de téléchargement dans ASP.NET?

J'ai un formulaire qui exclut un téléchargement de fichier dans ASP.NET. Je dois augmenter la taille maximale de téléchargement au-dessus de la valeur par défaut de 4 Mo.

J'ai trouvé dans certains endroits référençant le 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 souhaite uniquement modifier cet attribut pour certaines pages demandant un téléchargement de fichier.

Est-ce le bon chemin à prendre? Et comment puis-je l'utiliser?

223
Eddie

Ce paramètre va dans votre fichier web.config. Cela affecte l'ensemble de l'application, 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 ko. La valeur par défaut est 4096 (= 4 Mo).

387
Eric Rosenberger

Pour IIS 7+, outre l'ajout du 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 activer pour accepter les téléchargements de fichiers volumineux.
  • Dans la fenêtre principale, double-cliquez sur 'Demander le filtrage'.
  • Sélectionnez "Modifier les paramètres de fonction"
  • Modifier la "longueur de contenu maximale autorisée (octets)"
170
4imble

Pour augmenter la taille limite du fichier de téléchargement, nous avons deux moyens

1. IIS6 ou inférieur

Par défaut, dans ASP.Net, la taille maximale d'un fichier à télécharger sur le serveur est d'environ 4 Mo . Cette valeur peut être augmentée en modifiant l'attribut maxRequestLength dans web.config .

N'oubliez pas: maxRequestLenght est en ko

Exemple : si vous souhaitez limiter les téléchargements à 15 Mo, définissez maxRequestLength sur "15360" (15 x 1024).

<system.web>
   <!-- maxRequestLength for asp.net, in KB --> 
   <httpRuntime maxRequestLength="15360" ></httpRuntime> 
</system.web>

2. IIS7 ou supérieur

Un moyen légèrement différent utilisé ici pour télécharger des fichiers.IIS7 a introduit le module de filtrage des demandes . Ce qui s’est exécuté avant ASP.Net.Le mode de fonctionnement du pipeline est le suivant: IIS valeur ( maxAllowedContentLength ) vérifiée en premier lieu puis la valeur ASP.NET ( maxRequestLength ) est vérifié. L’attribut maxAllowedContentLength est par défaut 28,61 Mo . Cette valeur peut être augmentée en modifiant les deux attributs dans le même web.config.

N'oubliez pas: maxAllowedContentLength est en octets

Exemple : si vous souhaitez limiter les téléchargements à 15 Mo, définissez maxRequestLength sur "15360" et maxAllowedContentLength sur "15728640" (15 x 1024 x 1024).

<system.web>
   <!-- maxRequestLength for asp.net, in KB --> 
   <httpRuntime maxRequestLength="15360" ></httpRuntime> 
</system.web>

<system.webServer>              
   <security> 
      <requestFiltering> 
         <!-- maxAllowedContentLength, for IIS, in bytes --> 
         <requestLimits maxAllowedContentLength="15728640" ></requestLimits>
      </requestFiltering> 
   </security>
</system.webServer>

Lien de référence MSDN : https://msdn.Microsoft.com/en-us/library/e1f13641 (VS.80) .aspx

70
Malik Khalil

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

<system.web>

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

pour une limite maximale de 2 Go, sur votre application web.config:

<system.web>
  <compilation debug="true" targetFramework="4.5" />
  <httpRuntime targetFramework="4.5" maxRequestLength="2147483647" executionTimeout="1600" requestLengthDiskThreshold="2147483647" />
</system.web>

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxAllowedContentLength="2147483647" />
    </requestFiltering>
  </security>
</system.webServer>
12
cangosta

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

La valeur par défaut de "204800" (~ 205 Ko) est à mon avis trop faible pour la plupart des utilisateurs. Modifiez simplement la valeur en fonction de ce que vous pensez être max.

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 l'édition du fichier:

alt text
(source: itmaskinen.se )

Edit: Je n'ai pas lu correctement la question (comment définir la maxrequest dans webconfig). Mais cette information peut être un sujet d’intérêt pour d’autres personnes, beaucoup de personnes qui déplacent leurs sites de win2000-server à win2003 et qui ont une fonction de téléchargement fonctionnelle et ont soudainement obtenu le Request.BinaryRead Failed error l’utilisera. Je laisse donc la réponse ici.

7
Stefan

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

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

Le requestLengthDiskThreshold est 80000 octets par défaut, il est donc trop petit pour mon application. requestLengthDiskThreshold est mesurée en octets et maxRequestLength est exprimée en kilo-octets.

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

4
Max Zerbini

Si vous utilisez Framework 4.6

<httpRuntime targetFramework="4.6.1" requestValidationMode="2.0" maxRequestLength="10485760"  />
3
mbadeveloper

Je sais que c'est une vieille question.

Donc voici ce que vous devez faire:

Dans votre fichier web.config, ajoutez ceci dans:

    <!-- 3GB Files / in kilobyte (3072*1024) -->
    <httpRuntime targetFramework="4.5" maxRequestLength="3145728"/>

et cela sous

<security>
    <requestFiltering>

      <!-- 3GB Files / in byte (3072*1024*1024) -->
      <requestLimits maxAllowedContentLength="3221225472" />

    </requestFiltering>
</security>

Vous voyez dans le commentaire comment cela fonctionne. Dans l'un, vous devez avoir le sie en octets et l'autre en kilo-octets. J'espère que ça t'as aidé.

3
damir

Vous pouvez écrire ce bloc de code dans le fichier web.config de votre application.

<httpRuntime maxRequestLength="2048576000" />
<sessionState timeout="3600"  />

En écrivant ce code, vous pouvez télécharger un fichier plus volumineux qu'aujourd'hui

2
user3683243

La taille maximale du fichier peut être limitée à un seul contrôleur MVC ou même à une action.
La balise web.config <location> peut être utilisée pour cela:

<location path="YourAreaName/YourControllerName>/YourActionName>">
  <system.web>
    <!-- 15MB maxRequestLength for asp.net, in KB 15360 -->
    <httpRuntime maxRequestLength="15360" />
  </system.web>
  <system.webServer>
    <security>
      <requestFiltering>
        <!-- 15MB maxAllowedContentLength, for IIS, in bytes 15728640 -->
        <requestLimits maxAllowedContentLength="15728640" />
      </requestFiltering>
    </security>
  </system.webServer>
</location>

Ou vous pouvez ajouter ces entrées dans le propre web.config de la région.

1
Martin

Si vous utilisez sharepoint, vous devez également configurer la taille maximale avec les outils d'administration: kb92508

0
Quiz

Si cela fonctionne sur votre ordinateur local et ne fonctionne pas après le déploiement dans IIS (j'ai utilisé Windows Server 2008 R2), j'ai une solution.

Ouvrez IIS (inetmgr) Accédez à votre site Web. À droite, accédez à Contenu (filtrage des demandes), cliquez sur Modifier les paramètres de fonctionnalité. Modifiez la taille maximale du contenu en tant que (octets requis). Cela fonctionnera. Vous pouvez également prendre l’aide du fil suivant http://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits

0
Rahat Ali

J'ai un article de blog sur la façon de augmenter la taille du fichier pour le contrôle de téléchargement par asp .

De la poste:

Par défaut, le contrôle FileUpload autorise le téléchargement d’un fichier d’un maximum de 4 Mo. Le délai d’exécution est de 110 secondes. Ces propriétés peuvent être modifiées à partir de la section httpRuntime du fichier web.config. La propriété maxRequestLength détermine la taille de fichier maximale pouvant être téléchargée. La propriété executionTimeout détermine la durée maximale d'exécution.

0
sk1900