Я получаю сообщение об ошибке Максимальная длина запроса, когда я пытаюсь загрузить видео на своем сайте.
Как это исправить?
Я получаю сообщение об ошибке Максимальная длина запроса, когда я пытаюсь загрузить видео на своем сайте.
Как это исправить?
Если вы используете IIS для размещения своего приложения, то размер файла для загрузки по умолчанию составляет 4 МБ. Чтобы увеличить его, используйте этот раздел ниже в вашем web.config -
<configuration>
<system.web>
<httpRuntime maxRequestLength="1048576" />
</system.web>
</configuration>
Для IIS7 и выше, вам также необходимо добавить строки ниже:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
</system.webServer>
Примечание:
maxRequestLength
измеряется в килобайтахmaxAllowedContentLength
измеряется в байтахименно поэтому значения отличаются в этом примере конфигурации. (Оба эквивалентны 1 ГБ)
Я не думаю, что это упоминалось здесь, но чтобы это работало, я должен был предоставить оба этих значения в файле web.config:
В system.web
<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
И в system.webServer
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
ВАЖНО: Оба эти значения должны совпадать. В этом случае максимальная загрузка составляет 1024 мегабайта.
maxRequestLength имеет 1048576 KILOBYTES, а maxAllowedContentLength имеет 1073741824 BYTES.
Я знаю, что это очевидно, но легко пропустить.
Возможно, стоит отметить, что вы можете ограничить это изменение URL, который вы ожидаете использовать для загрузки, а не всего вашего сайта.
<location path="Documents/Upload">
<system.web>
<!-- 50MB in kilobytes, default is 4096 or 4MB-->
<httpRuntime maxRequestLength="51200" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<!-- 50MB in bytes, default is 30000000 or approx. 28.6102 Mb-->
<requestLimits maxAllowedContentLength="52428800" />
</requestFiltering>
</security>
</system.webServer>
</location>
И на всякий случай кто-то ищет способ справиться с этим исключением и показать содержательное объяснение пользователю (что-то вроде "Вы загружаете слишком большой файл" ):
//Global.asax
private void Application_Error(object sender, EventArgs e)
{
var ex = Server.GetLastError();
var httpException = ex as HttpException ?? ex.InnerException as HttpException;
if(httpException == null) return;
if(httpException.WebEventCode == WebEventCodes.RuntimeErrorPostTooLarge)
{
//handle the error
Response.Write("Too big a file, dude"); //for example
}
}
(требуется ASP.NET 4 или более поздняя версия)
Максимальный размер запроса по умолчанию составляет 4 МБ (4096 КБ)
Это объясняется здесь: https://support.microsoft.com/en-us/help/295626/prb-cannot-upload-large-files-when-you-use-the-htmlinputfile-server-co
Выше статья также объясняет, как решить эту проблему :)
В файле web.config есть элемент для настройки максимального размера загруженного файла:
<httpRuntime
maxRequestLength="1048576"
/>
Если вы не можете обновить файлы конфигурации, но управляете кодом, который обрабатывает загрузку файлов, используйте HttpContext.Current.Request.GetBufferlessInputStream(true)
.
Значение true
для параметра disableMaxRequestLength
указывает платформе игнорировать настроенные пределы запросов.
Для подробного описания посетите https://msdn.microsoft.com/en-us/library/hh195568(v=vs.110).aspx
maxRequestLength (длина в КБ) Здесь как ex. Я взял 1024 (1MB) maxAllowedContentLength (длина в байтах) должен быть таким же, как ваш maxRequestLength (1048576 bytes = 1MB).
<system.web>
<httpRuntime maxRequestLength="1024" executionTimeout="3600" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1048576"/>
</requestFiltering>
</security>
</system.webServer>
Чтобы суммировать все ответы в одном месте:
<system.web>
<httpRuntime targetFramework="4.5.2" maxRequestLength="1048576"/>
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
</system.webServer>
Правила:
Заметки:
больше информации MSDN
Это беспокоило меня и в течение нескольких дней. Я изменил файл Web.config, но он не сработал. Оказалось, что в моем проекте есть два файла Web.config, и я должен изменить его в директории ROOT, а не в других. Надеюсь, это было бы полезно.
Если у вас есть запрос на приложение на сайте, убедитесь, что вы установили maxRequestLength в корневой web.config. Значение maxRequestLength в приложениях web.config, похоже, игнорируется.
Я был спокоен тем фактом, что наш файл web.config имеет несколько разделов system.web: он работал, когда я добавил < httpRuntime maxRequestLength = "1048576" /" > в разделе system.web, который находится на уровне конфигурации.
Мне пришлось отредактировать файл C:\Windows\System32\inetsrv\config\applicationHost.config
и добавить <requestLimits maxAllowedContentLength="1073741824" />
в конец...
<configuration>
<system.webServer>
<security>
<requestFiltering>
раздела.
Я могу добавить в config web uncompiled
<system.web>
<httpRuntime maxRequestLength="1024" executionTimeout="3600" />
<compilation debug="true"/>
</system.web>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1048576"/>
</requestFiltering>
</security>
Пожалуйста, проверьте этот демон код, чтобы решить вашу проблему. Скопируйте его, это файл web.config. .
<system.web>
<httpRuntime executionTimeout="3600" maxRequestLength="102400" requestLengthDiskThreshold="80" useFullyQualifiedRedirectUrl="false"
minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100" enableKernelOutputCache="true" enableVersionHeader="true"
requireRootedSaveAsPath="true" enable="true" shutdownTimeout="90" delayNotificationTimeout="5" waitChangeNotification="0"
maxWaitChangeNotification="0" enableHeaderChecking="true" sendCacheControlHeader="true" apartmentThreading="false" />
<system.web>