ограничение загрузки размера файла в ASP.NET MVC: более 1 параметра maxRequestLength в интернете.config(s)

Я хотел бы иметь более 1 настройки для ограничения загрузки maxRequestLength - размер файла (например, один для файла/Новый, другой для изображения/новый). Все мои действия принимают дополнительные параметры (например, /File/New?folderId=234).

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

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

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

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

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

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

независимо от того, что я делаю, только одно значение для httpRuntime.применяется maxRequestLength-это в (корневой) сети.конфиг...система.сеть.

3 ответов


см. мой ответ здесь: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>

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

что нужно тебе.

документы на элемент местности даже есть этот самый пример:

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

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

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