Я получаю сообщение об ошибке. Превышена максимальная длина запроса при попытке загрузить видео на свой сайт.
Как я могу это исправить?
Я получаю сообщение об ошибке. Превышена максимальная длина запроса при попытке загрузить видео на свой сайт.
Как я могу это исправить?
Ответы:
Если вы используете 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
а не в Views
папку
Я не думаю, что это было упомянуто здесь, но чтобы это работало, мне пришлось предоставить оба этих значения в web.config:
В system.web
<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
И в system.webServer
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
ВАЖНО : Оба эти значения должны совпадать. В этом случае моя максимальная загрузка составляет 1024 мегабайта.
maxRequestLength имеет 1048576 килобайт и maxAllowedContentLength имеет 1073741824 BYTES .
Я знаю, это очевидно, но это легко пропустить.
web.config
файле проекта .
Возможно, стоит отметить, что вы можете ограничить это изменение 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 (((System.Web.HttpException)httpException.InnerException).WebEventCode == System.Web.Management.WebEventCodes.RuntimeErrorPostTooLarge)
{
//handle the error
Response.Write("Too big a file, dude"); //for example
}
}
(Требуется ASP.NET 4 или более поздняя версия)
HttpContext.Current.ClearError()
было необходимо для Response.Redirect()
правильной работы. С точки зрения web.config
этого работает только с maxRequestLength
атрибутом httpRuntime
.
onchange
событие на кнопке загрузки и сравнивая размер файла загрузки с максимальным пределом загрузки.
Если вы не можете обновить файлы конфигурации, но управляете кодом, который обрабатывает загрузку файлов, используйте HttpContext.Current.Request.GetBufferlessInputStream(true)
.
true
Значение для disableMaxRequestLength
параметра указывает рамки игнорировать формируемые пределы запроса.
Для подробного описания посетите https://msdn.microsoft.com/en-us/library/hh195568(v=vs.110).aspx
Чтобы суммировать все ответы в одном месте:
<system.web>
<httpRuntime targetFramework="4.5.2" maxRequestLength="1048576"/>
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
</system.webServer>
Правила:
Ноты:
больше информации 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>
Если у вас есть запрос на обращение к приложению на сайте, убедитесь, что вы установили maxRequestLength в корневом каталоге web.config. Значение maxRequestLength в приложении web.config, по-видимому, игнорируется.
httpRuntime maxRequestLength="###
и requestLimits maxAllowedContentLength
в веб-конфигурацию на корневом уровне, а не на уровне вложенного приложения.
Мне пришлось отредактировать C:\Windows\System32\inetsrv\config\applicationHost.config
файл и добавить <requestLimits maxAllowedContentLength="1073741824" />
в конец ...
<configuration>
<system.webServer>
<security>
<requestFiltering>
раздел.
Согласно этой статье поддержки Microsoft
applicationHost.config
.
Могу добавить в конфиг веб без компиляции
<system.web>
<httpRuntime maxRequestLength="1024" executionTimeout="3600" />
<compilation debug="true"/>
</system.web>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1048576"/>
</requestFiltering>
</security>
executionTimeout
Атрибут не имеет ничего общего с тем, что просят, и ни делает compilation
тег.