Подтвердить что ты не робот

Ограничение загрузки файла в 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.

4b9b3361

Ответ 2

Я считаю, что атрибут 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>

Ответ 3

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