2009-06-24 6 views
17

Je souhaite avoir plus de 1 paramètre pour maxRequestLength - limitation de téléchargement de taille de fichier (par exemple, un fichier pour Fichier/Nouveau, autre pour Image/Nouveau). Toutes mes actions prennent des paramètres supplémentaires (par exemple/File/New? FolderId = 234).Limite de téléchargement de taille de fichier dans ASP.NET MVC: plus de 1 paramètre maxRequestLength dans web.config (s)

Réglage simple fonctionne comme prévu:

<httpRuntime executionTimeout="60" maxRequestLength="1024" /> 

J'ai essayé de 2 paramètres avec 2 sections de l'emplacement dans le web.config racine, mais sans aucun succès. Je ne suis pas sûr de ce qu'il faut écrire dans "path" - page aspx physique d'une vue, ou contrôleur + action ... cependant, rien ne semble fonctionner.

<location path="/File/"> 
    <system.web> 
     <httpRuntime executionTimeout="60" maxRequestLength="4096" /> 
    </system.web> 
</location> 
<location path="/Picture/"> 
    <system.web> 
     <httpRuntime executionTimeout="60" maxRequestLength="1024" /> 
    </system.web> 
</location> 

J'ai essayé de mettre un autre web.config dans un dossier de vue spécifique (par exemple/Vues/Photo/...), comme cela fonctionne dans ASP.NET de Webform classique, mais cela ne semble pas faire l'affaire soit ...

<location path=""> 
    <system.web> 
     <httpRuntime executionTimeout="60" maxRequestLength="1024" /> 
    </system.web> 
</location> 

Peu importe ce que je fais, une seule valeur pour httpRuntime.maxRequestLength est appliquée - que (racine) web.config ... system.web.

Répondre

11

Je crois que l'attribut Path ne doit pas commencer ou se terminer par un «/» - donc vous devriez avoir:

<location path="File"> 
    <system.web> 
    <httpRuntime executionTimeout="60" maxRequestLength="4096" /> 
    </system.web> 
</location> 
<location path="Picture"> 
    <system.web> 
    <httpRuntime executionTimeout="60" maxRequestLength="1024" /> 
    </system.web> 
</location> 

Votre niveau de répertoire virtuel ou physique Web.config ne doit pas avoir les éléments d'emplacement <.

Cela devrait vous régler.

Les docs pour le Location element ont même cet exemple très:

L'exemple de code suivant montre comment définir la limite de taille de fichier téléchargé à 128 Ko pour la page spécifiée.

<configuration> 
    <location path="UploadPage.aspx"> 
    <system.web> 
     <httpRuntime maxRequestLength="128"/> 
    </system.web> 
    </location> 
</configuration> 
+0

Vous avez raison, bien sûr. J'ai essayé toutes les variations possibles ("Image", "/ Image", "Image /", "/ Image /", "Vues/Image" etc.), mais en postant ma question j'ai choisi "/ Image /", qui était évidemment faux. Cependant, cela n'a pas fonctionné pour une autre raison. J'ai refaçonné le code (changé la façon dont les paramètres ont été fournis - maintenant comme paramètres de chaîne de requête) et cela a commencé à fonctionner correctement, mais je ne suis pas sûr du problème. :-(Merci quand même! :-) – Alex42

0

Cette solution est incomplète, car IIS 7 a des paramètres "Filtrage des demandes" limité à 30Mo par défaut. Vous devriez augmenter ce paramètre, voir les détails dans my blogpost

Questions connexes