2009-06-24 1 views
17

Я хотел бы иметь более 1 установки для maxRequestLength - ограничение загрузки размера файла (например, одно для файла/нового, другое для Picture/New). Все мои действия принимают дополнительные параметры (например,/File/New? FolderId = 234).ограничение размера загрузки файла в ASP.NET MVC: более 1 maxRequestLength в web.config

Single установка работает, как ожидалось:

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

Я попытался иметь 2 настройки с 2-х секций местоположения в корневом web.config, но без какого-либо успеха. Я не уверен, что писать в «пути» - физической странице aspx представления или контроле + действие ... однако ничего не работает.

<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> 

Я пытался поставить другой web.config в папке конкретного вида (например,/Views/Picture/...), как она работает в классическом Webform ASP.NET, но это, кажется, не делать трюк либо ...

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

Независимо от того, что я делаю, только одно значение для httpRuntime.maxRequestLength применяется - что в (корень) web.config ... system.web.

ответ

11

Я считаю, что атрибут Path не должен начинаться или заканчиваться символом «/» - так что вы должны иметь:

<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> 

Ваш виртуальный или физический каталог уровня В Web.config не должно быть элементов местоположения <.

Это должно сортировать вас.

Документах для Location element даже этот самый пример:

В следующем примере кода показано, как установить загруженное ограничение на размер файла в 128 КБ только страницы, указанной.

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

Вы правы, конечно. Я пробовал все возможные варианты («Изображение», «Изображение», «Изображение /», «/ Картинка /», «Вид/Изображение» и т. Д.), Но при отправке моего вопроса я выбрал «/ Picture /», который был очевидно, неправильно. Однако это не сработало по другой причине. Я реорганизовал код (изменил способ предоставления параметров - теперь как параметры запроса), и он начал работать правильно, но я не совсем уверен, в чем проблема. :-(Спасибо, в любом случае! :-) – Alex42

0

Это решение является неполным, поскольку IIS 7 имеет параметры "Фильтрация запросов" ограничивается 30Mb по умолчанию. Вы должны увеличить этот параметр, см. Подробности в my blogpost