Превышена максимальная длина запроса. - PullRequest
965 голосов
/ 04 октября 2010

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

Как мне это исправить?

Ответы [ 14 ]

1842 голосов
/ 04 октября 2010

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

530 голосов
/ 19 сентября 2012

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

In system.web

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

И в system.webServer

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

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

maxRequestLength имеет 1048576 КИЛОБАЙТОВ , а maxAllowedContentLength имеет 1073741824 БАЙТОВ .

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

184 голосов
/ 06 мая 2013

Возможно, стоит отметить, что вы можете ограничить это изменение 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>
40 голосов
/ 23 мая 2015

И на всякий случай, если кто-то ищет способ обработать это исключение и показать пользователю содержательное объяснение (что-то вроде «Вы загружаете слишком большой файл»):

//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 или более поздняя версия)

26 голосов
/ 04 октября 2010

Максимальный размер запроса по умолчанию составляет 4 МБ (4096 КБ)

Это объясняется здесь: http://support.microsoft.com/default.aspx?scid=kb;EN-US;295626

В данной статье также объясняется, как решить эту проблему:)

18 голосов
/ 04 октября 2010

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

<httpRuntime 
    maxRequestLength="1048576"
  />
16 голосов
/ 10 августа 2017

Если вы не можете обновить файлы конфигурации, но управляете кодом, который обрабатывает загрузку файлов, используйте HttpContext.Current.Request.GetBufferlessInputStream(true).

Значение true для параметра disableMaxRequestLength указывает платформе игнорировать настроенные пределы запросов.

Для подробного описания посетите https://msdn.microsoft.com/en-us/library/hh195568(v=vs.110).aspx

8 голосов
/ 04 декабря 2015

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>
7 голосов
/ 21 марта 2018

Суммировать все ответы в одном месте:

<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

6 голосов
/ 31 декабря 2015

Это беспокоило меня и в течение нескольких дней. Я изменил файл Web.config, но он не работал. Оказалось, что в моем проекте есть два файла Web.config, и я должен изменить один в каталоге ROOT , а не остальные. Надеюсь, это будет полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...