Что получает приоритет, maxRequestLength или maxAllowedContentLength?

127

При изменении максимально допустимого размера файла для загрузки я наткнулся на эти две настройки.

В sytem.web у вас есть узел времени выполнения http с maxRequestLength . В system.webServer у вас есть requestLimits с maxAllowedContentLength .

Что теперь имеет приоритет над другим? И нужно ли устанавливать оба параметра или последнего (для IIS7) достаточно?

Флорис Девриндт
источник

Ответы:

196

maxRequestLength указывает максимальный размер запроса, поддерживаемый ASP.NET, тогда как maxAllowedContentLength указывает максимальную длину содержимого в запросе, поддерживаемом IIS. Таким образом, чтобы загружать большие файлы, вам необходимо установить оба параметра: меньший «имеет приоритет».

(Я взял это с http://forums.iis.net/t/1169846.aspx - кредит там, где он должен.)

Вы можете сделать их локальными для определенного сайта или даже для папки на сайте, отредактировав соответствующий файл web.config. Если длина файла (ну, запроса) меньше maxAllowedContentLength, но больше maxRequestLength, пользователь получит вашу стандартную страницу ошибок (ASPX), если она у вас есть. Если наоборот, вместо этого он получит страницу с ошибкой IIS. По этой причине вам может потребоваться очень большое значение maxAllowedContentLength (только для этого веб-сайта / папки), а затем ограничивающее значение maxRequestLength.

Наконец, помните, что maxRequestLength находится в КБ, тогда как maxAllowedContentLength находится в BYTES!

Эд Грэм
источник
У меня есть 3 элемента управления загрузкой на моей странице, где элемент управления загрузкой имеет ограничение в 50 МБ. Итак, я загружаю всего 150 МБ за один раз. Моя конфигурация: maxAllowedContentLength = "51200000" & executionTimeout = "1200" & maxRequestLength = "51200". какую длину я должен изменить здесь. Пожалуйста, предложите.
Нирав Васоя
21

Короткий и приятный ответ заключается в том, что меньший из двух будет иметь приоритет. Небольшой совет: на мой взгляд, желательно установить maxRequestLength меньшим из двух, так как вы можете поймать исключение в событии Application_Error вашего Global.asax, если оно будет превышено. Если вы превысите maxAllowedContentLength, сначала IIS будет обрабатывать его вместо ASP.NET, что усложняет работу с кодом.

joelmdev
источник