Превышена максимальная длина запроса.
Я получаю сообщение об ошибке. Максимальная длина запроса превышена при попытке загрузить видео на мой сайт.
Как это исправить?
16 ответов
Если вы используете 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 КБ, а maxAllowedContentLength имеет 1073741824 БАЙТА.
Я знаю, это очевидно, но это легко пропустить.
Возможно, стоит отметить, что вы можете ограничить это изменение 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 КБ).
Это объясняется здесь: http://support.microsoft.com/default.aspx?scid=kb;EN-US;295626
Выше статья также объясняет, как решить эту проблему:)
Если вы не можете обновить файлы конфигурации, но полностью контролируете код, который обрабатывает загруженные файлы, используйте HttpContext.Current.Request.GetBufferlessInputStream(true)
,
true
значение для disableMaxRequestLength
Параметр указывает платформе игнорировать настроенные пределы запроса.
Для подробного описания посетите https://msdn.microsoft.com/en-us/library/hh195568(v=vs.110).aspx
В web.config есть элемент для настройки максимального размера загружаемого файла:
<httpRuntime
maxRequestLength="1048576"
/>
Чтобы суммировать все ответы в одном месте:
<system.web>
<httpRuntime targetFramework="4.5.2" maxRequestLength="1048576"/>
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
</system.webServer>
Правила:
- Значение maxRequestLength (в килобайтах) должно совпадать с maxAllowedContentLength (в байтах).
- Большую часть времени ваш раздел system.web может уже содержать "httpRuntime". установите для targetFramework версию используемой.net.
Заметки:
- значение по умолчанию для maxRequestLength составляет 4096 (4 МБ). максимальное значение - 2 147 483 647
- значение по умолчанию для maxAllowedContentLength составляет 30 000 000 (около 30 МБ). максимальное значение 4 294 967 295
больше информации MSDN
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>
Это беспокоило меня и в течение нескольких дней. Я изменил файл Web.config, но он не работал. Оказалось, что в моем проекте есть два файла Web.config, и мне следует изменить один файл в каталоге ROOT, а не остальные. Надеюсь, это будет полезно.
Если у вас есть запрос на обращение к приложению на сайте, убедитесь, что вы установили maxRequestLength в корневом каталоге web.config. Значение maxRequestLength в приложении web.config, по-видимому, игнорируется.
Я должен был отредактировать C:\Windows\System32\inetsrv\config\applicationHost.config
файл и добавить <requestLimits maxAllowedContentLength="1073741824" />
до конца...
<configuration>
<system.webServer>
<security>
<requestFiltering>
раздел.
Согласно этой статье поддержки Microsoft
Я был ошарашен тем фактом, что наш файл web.config имеет несколько разделов system.web: он работал, когда я добавил
Я имел дело с той же ошибкой и, потратив время, решил ее, добавив следующие строки в файл web.config
<system.web>
<httpRuntime targetFramework="4.7.1" maxRequestLength="1048576"/>
</system.web>
и
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
</system.webServer>
Внимание: как уже отмечали некоторые, в моем файле web.config уже была запись для <httpRuntime... Я слепо скопировал и вставил отсюда еще один httpRuntime, и это привело к сбою всего сайта.
Могу добавить в конфиг веб без компиляции
<system.web>
<httpRuntime maxRequestLength="1024" executionTimeout="3600" />
<compilation debug="true"/>
</system.web>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1048576"/>
</requestFiltering>
</security>