Есть ли способ игнорировать ограничение 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>

Тем не менее, вы также можете увеличить время ожидания или, может быть, время ожидания.