Ответ 1
См. мой ответ здесь: ASP.NET MVC и httpRuntime executionTimeout
Я хотел бы иметь более 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.
См. мой ответ здесь: ASP.NET MVC и httpRuntime executionTimeout
Я считаю, что атрибут 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 Мб. Вы должны увеличить этот параметр, см. Подробности в мой блогпост