ограничение размера загрузки файла в ASP.NET MVC: более 1 параметра maxRequestLength в файле web.config (s) - PullRequest
17 голосов
/ 24 июня 2009

Я хотел бы иметь более 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 ]

11 голосов
/ 26 июня 2009

Я считаю, что атрибут 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>
11 голосов
/ 26 июня 2009

Смотрите мой ответ здесь: ASP.NET MVC и httpRuntime executeTimeout

0 голосов
/ 11 апреля 2013

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

...