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

Я хотел бы иметь более 1 параметра для maxRequestLength - ограничение размера загружаемого файла (например, один для файла/нового, другой для изображения/нового). Все мои действия принимают дополнительные параметры (например, /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/...), как это работает в классической веб-форме ASP.NET, но это тоже не помогает...

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

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


person Alex42    schedule 24.06.2009    source источник
comment
См. мой ответ здесь: https://stackoverflow.com/questions/492346/asp-net-mvc-and-httpruntime-executiontimeout/636609#636609   -  person Chris Hynes    schedule 26.06.2009


Ответы (1)


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

Это должно вас устроить.

В документации для элемента Location даже есть этот пример:

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

<configuration>
  <location path="UploadPage.aspx">
    <system.web>
      <httpRuntime maxRequestLength="128"/>
    </system.web>
  </location>
</configuration>
person Zhaph - Ben Duguid    schedule 25.06.2009
comment
Вы правы, конечно. Я пробовал все возможные варианты (изображение, /изображение, изображение/, /изображение/, просмотры/изображение и т. д.), но при публикации своего вопроса я выбрал /изображение/, что было явно неправильным. Однако это не сработало по другой причине. Я отрефакторил код (изменил способ предоставления параметров - теперь как параметры строки запроса), и он начал работать правильно, но я не совсем уверен, в чем проблема. :-( Спасибо, в любом случае! :-) - person Alex42; 01.07.2009