Превышен максимальный размер запроса.
При попытке загрузить видео на мой сайт я получаю ошибку Превышен максимальный размер запроса.
Как можно решить эту проблему?
5 ответ(ов)
Если вы используете 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 в килобайтах, по умолчанию 4096 или 4MB -->
<httpRuntime maxRequestLength="51200" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<!-- 50MB в байтах, по умолчанию 30000000 или примерно 28.6102 Mb -->
<requestLimits maxAllowedContentLength="52428800" />
</requestFiltering>
</security>
</system.webServer>
</location>
Таким образом, вы можете повысить максимальный размер загружаемых файлов только для конкретного местоположения, что может быть более безопасным и эффективным подходом.
Если кто-то ищет способ обработать это исключение и предоставить пользователю понятное объяснение (например, "Вы загружаете файл, который слишком большой"), то можно использовать следующий код в файле Global.asax
:
//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)
{
// Обрабатываем ошибку
Response.Write("Файл слишком велик, дружище"); // например
}
}
Обратите внимание, что данный код требует использования ASP.NET 4 или более поздней версии.
В файле web.config есть элемент, который позволяет настроить максимальный размер загружаемого файла. Вы можете использовать следующий код:
<httpRuntime
maxRequestLength="1048576"
/>
Значение maxRequestLength
указывается в килобайтах. В данном примере установлен лимит в 1 ГБ (1048576 КБ). Обратите внимание, что это значение должно быть установлено в соответствии с вашими потребностями и ограничениями сервера.
Обнаружено потенциально опасное значение Request.Form, полученное от клиента
Предварительный просмотр изображения перед загрузкой
JavaScriptSerializer - Сериализация JSON перечислений в виде строк
Если папка не существует, создайте её
Как установить заголовок Content-Type для запроса HttpClient?