11

Превышен максимальный размер запроса.

15

При попытке загрузить видео на мой сайт я получаю ошибку Превышен максимальный размер запроса.

Как можно решить эту проблему?

5 ответ(ов)

22

Если вы используете 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 ГБ).

6

Я не думаю, что это упоминалось здесь, но для того чтобы это заработало, мне пришлось указать оба этих значения в web.config:

В секции system.web

<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />

А в секции system.webServer

<security>
    <requestFiltering>
        <requestLimits maxAllowedContentLength="1073741824" />
    </requestFiltering>
</security>

ВАЖНО: Оба этих значения должны совпадать. В данном случае мой максимальный размер загрузки составляет 1024 мегабайта.

maxRequestLength равен 1048576 КИЛОБАЙТАМ, а maxAllowedContentLength — 1073741824 БАЙТАМ.

Я понимаю, что это очевидно, но легко это упустить из виду.

2

Стоит отметить, что вам, возможно, следует ограничить это изменение только тем 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>

Таким образом, вы можете повысить максимальный размер загружаемых файлов только для конкретного местоположения, что может быть более безопасным и эффективным подходом.

0

Если кто-то ищет способ обработать это исключение и предоставить пользователю понятное объяснение (например, "Вы загружаете файл, который слишком большой"), то можно использовать следующий код в файле 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 или более поздней версии.

0

В файле web.config есть элемент, который позволяет настроить максимальный размер загружаемого файла. Вы можете использовать следующий код:

<httpRuntime 
    maxRequestLength="1048576"
/>

Значение maxRequestLength указывается в килобайтах. В данном примере установлен лимит в 1 ГБ (1048576 КБ). Обратите внимание, что это значение должно быть установлено в соответствии с вашими потребностями и ограничениями сервера.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь