Есть ли способ игнорировать ограничение maxRequestLength загрузки файлов на 2 ГБ?
Здесь, где я устанавливаю maxRequestLength
в 2 ГБ (максимальное значение), что указывает максимальный размер запроса, поддерживаемый ASP.NET:
<system.web>
<httpRuntime maxRequestLength="2097151" executionTimeout="3600"/>
...
и здесь я устанавливаю значение maxAllowedContentLength
в 4 ГБ (максимальное значение), которое указывает максимальную длину содержимого в запросе, поддерживаемом IIS
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="4294967295"/>
</requestFiltering>
</security>
...
Я хотел бы иметь возможность загружать файлы до 4 ГБ, но меня ограничивает поле maxRequestLength
.
Я заметил, что этот инструмент загрузки третьей стороны (http://www.element-it.com/onlinehelp/webconfig.html) имеет свойство ignoreHttpRuntimeMaxRequestLength
, которое позволяет загружать файлы до 4 ГБ.
Кто-нибудь знает, могу ли я игнорировать значение maxRequestLength
, как это делает другой инструмент загрузки?
Ответы
Ответ 1
Учитывая тип MaxRequestLength, это Int, на данный момент нет возможности правильно проанализировать значение выше Int.Max.
Я слышал, что они могут увеличить IIS8, но пока ничего конкретного от Microsoft. Единственный способ, который я видел в .Net 4.5, - использовать HttpRequest.GetBufferlessInputStream, который
Получает объект Stream, который может использоваться для чтения входящего тела сущности HTTP, необязательно отключая ограничение длины запроса, которое установлено в свойстве MaxRequestLength.
Ответ 2
В моем случае это были изменения, которые мне нужно было применить:
<system.web>
<httpRuntime targetFramework="4.6.1" maxRequestLength="2147483647" />
</system.web>
<system.webServer>
<serverRuntime uploadReadAheadSize="2147483647" />
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483647" />
</requestFiltering>
</security>
</system.webServer>
Чтобы добавить serverRuntime, следуйте инструкциям в первом ответе на этот вопрос.
Ответ 3
Вы можете переопределить параметры в файле machine.config, добавив в свое приложение web.config тот же самый node. Microsoft имеет некоторую информацию о Иерархия и наследование файла конфигурации ASP.NET.
ПРИМЕЧАНИЕ. Эрик Филипс прав, максимальный размер maxRequestLength
составляет 2,147,483,647 (Int32.MaxValue
). Этот ответ должен проиллюстрировать, как переопределить параметр, определенный в файле machine.config(или любом .config) из вашего приложения web.config/
<configuration>
...
<system.web>
<httpRuntime maxRequestLength="2147483647"/>
...
...
</system.web>
...
</configuration>
Тем не менее, вы также можете увеличить время ожидания или, может быть, время ожидания.