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

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

В sytem.web у вас есть http runtime node с maxRequestLength. В system.webServer у вас есть requestLimits с maxAllowedContentLength.

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

Ответ 1

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

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

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

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

Ответ 2

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