Ограничение размера загрузки файла в ASP.NET MVC: более 1 параметра maxRequestLength в файле web.config(s)
Я хотел бы иметь более 1 параметра для maxRequestLength - ограничение размера загрузки файла (например, один для File/New, другой для Picture/New). Все мои действия имеют дополнительные параметры (например, /File/New? FolderId=234).
Одиночная настройка работает как положено:
<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 - в (root) web.config...system.web.
3 ответа
Смотрите мой ответ здесь: ASP.NET MVC и httpRuntime executeTimeout
Я считаю, что атрибут 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 даже имеют этот пример:
В следующем примере кода показано, как установить ограничение размера загружаемого файла в 128 КБ только для указанной страницы.
<configuration>
<location path="UploadPage.aspx">
<system.web>
<httpRuntime maxRequestLength="128"/>
</system.web>
</location>
</configuration>
Это решение является неполным, поскольку в IIS 7 параметры "Фильтрация запросов" по умолчанию ограничены 30 МБ. Вы должны увеличить этот параметр, подробности смотрите в моем блоге