Который получает приоритет, maxRequestLength или maxAllowedContentLength?

#asp.net #file-upload #web-config #maxrequestlength

#asp.net #загрузка файла #web-config #maxrequestlength

Вопрос:

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

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

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

Ответ №1:

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

(Я взял это из http://forums.iis.net/t/1169846.aspx — зачтите по заслугам.)

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

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

Комментарии:

1. У меня есть 3 элемента управления загрузкой на моей странице, где управление загрузкой ограничено 50 МБ. Итак, я загружаю всего 150 МБ за один раз, моя конфигурация maxAllowedContentLength =»51200000″ amp; executionTimeout = «1200» amp; maxRequestLength = «51200». какую длину я должен изменить здесь. Пожалуйста, предложите.

Ответ №2:

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