Как увеличить максимальный размер загружаемого файла в ASP.NET? - PullRequest
216 голосов
/ 14 ноября 2008

У меня есть форма, за исключением загрузки файла в ASP.NET. Мне нужно увеличить максимальный размер загрузки до значения по умолчанию, превышающего 4 МБ.

Я нашел в некоторых местах ссылку на код ниже msdn .

[ConfigurationPropertyAttribute("maxRequestLength", DefaultValue = )]

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

Это правильный путь? И как мне это использовать?

Ответы [ 14 ]

378 голосов
/ 14 ноября 2008

Этот параметр указывается в вашем файле web.config. Хотя это влияет на все приложение ... Я не думаю, что вы можете установить его на страницу.

<configuration>
  <system.web>
    <httpRuntime maxRequestLength="xxx" />
  </system.web>
</configuration>

"ххх" в КБ. По умолчанию установлено значение 4096 (= 4 МБ).

163 голосов
/ 30 августа 2013

Для IIS 7+, а также для добавления параметра httpRuntime maxRequestLength также необходимо добавить:

  <system.webServer>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="52428800" /> <!--50MB-->
      </requestFiltering>
    </security>
  </system.webServer>

Или в IIS (7):

  • Выберите веб-сайт, для которого вы хотите разрешить загрузку больших файлов.
  • В главном окне дважды щелкните «Фильтрация запросов»
  • Выберите «Редактировать настройки функции»
  • Изменить «Максимально допустимая длина содержимого (в байтах)»
65 голосов
/ 27 мая 2016

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

1. IIS6 или ниже

По умолчанию в ASP.Net максимальный размер файла для загрузки на сервер равен около 4MB . Это значение можно увеличить, изменив maxRequestLength атрибут в web.config .

Помните: maxRequestLenght в КБ

Пример : если вы хотите ограничить загрузку до 15 МБ, установите для maxRequestLength значение «15360» (15 x 1024).

<system.web>
   <!-- maxRequestLength for asp.net, in KB --> 
   <httpRuntime maxRequestLength="15360" ></httpRuntime> 
</system.web>

2. IIS7 или выше

Несколько иной способ загрузки файлов. IIS7 имеет введен модуль фильтрации запросов ., который выполнялся ранее ASP.Net. означает, что конвейер работает так, что IIS сначала проверяется значение ( maxAllowedContentLength ), затем ASP.NET проверяется значение ( maxRequestLength ). maxAllowedContentLength атрибут по умолчанию 28,61 МБ . Это значение может быть увеличено на изменение обоих атрибутов в одном и том же web.config .

Помните: maxAllowedContentLength в байтах

Пример : если вы хотите ограничить загрузку до 15 МБ, установите для maxRequestLength значение «15360» и для maxAllowedContentLength значение «15728640» (15 x 1024 x 1024).

<system.web>
   <!-- maxRequestLength for asp.net, in KB --> 
   <httpRuntime maxRequestLength="15360" ></httpRuntime> 
</system.web>

<system.webServer>              
   <security> 
      <requestFiltering> 
         <!-- maxAllowedContentLength, for IIS, in bytes --> 
         <requestLimits maxAllowedContentLength="15728640" ></requestLimits>
      </requestFiltering> 
   </security>
</system.webServer>

Ссылка на MSDN : https://msdn.microsoft.com/en-us/library/e1f13641(VS.80).aspx

15 голосов
/ 14 ноября 2008

Я считаю, что эта строка в web.config установит максимальный размер загрузки:

<system.web>

        <httpRuntime maxRequestLength="600000"/>
</system.web>
10 голосов
/ 11 сентября 2015

для максимального ограничения 2 ГБ в вашем приложении. Web.config:

<system.web>
  <compilation debug="true" targetFramework="4.5" />
  <httpRuntime targetFramework="4.5" maxRequestLength="2147483647" executionTimeout="1600" requestLengthDiskThreshold="2147483647" />
</system.web>

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxAllowedContentLength="2147483647" />
    </requestFiltering>
  </security>
</system.webServer>
7 голосов
/ 14 ноября 2008

Если у него Windows 2003 / IIS 6.0, проверьте AspMaxRequestEntityAllowed = "204800" в файле metabase.xml , расположенном в папке C: \ windows \ system32 \ inetsrv \

Значение по умолчанию "204800" (~ 205Kb), на мой взгляд, слишком мало для большинства пользователей. Просто измените значение на макс.

Если вы не можете сохранить файл после его редактирования, вам нужно либо остановить ISS-сервер, либо включить сервер, чтобы разрешить редактирование файла:

alt text
(источник: itmaskinen.se )

Редактировать: Я не правильно прочитал вопрос (как установить maxrequest в webconfig). Но эта информация может быть интересна для других людей, многие люди, которые перемещают свои сайты с win2000-сервера на win2003 и имеют работающую функцию загрузки и неожиданно получили ошибку Request.BinaryRead Failed , будут использовать ее , Поэтому я оставляю ответ здесь.

4 голосов
/ 28 марта 2013

У меня такая же проблема на Win 2008 IIS-сервере, я решил проблему с добавлением этой конфигурации в web.config:

<system.web>
    <httpRuntime executionTimeout="3600" maxRequestLength="102400" 
     appRequestQueueLimit="100" requestValidationMode="2.0"
     requestLengthDiskThreshold="10024000"/>
</system.web>

requestLengthDiskThreshold по умолчанию составляет 80000 байт, поэтому он слишком мал для моего приложения. requestLengthDiskThreshold измеряется в байтах, а maxRequestLength выражается в килобайтах.

Проблема присутствует, если приложение использует серверный компонент System.Web.UI.HtmlControls.HtmlInputFile. Для его решения необходимо увеличить запрос на изменение длины запроса.

3 голосов
/ 27 сентября 2017

Если вы используете Framework 4.6

<httpRuntime targetFramework="4.6.1" requestValidationMode="2.0" maxRequestLength="10485760"  />
3 голосов
/ 20 июля 2015

Я знаю, что это старый вопрос.

Итак, вот что вам нужно сделать:

В вашем файле web.config добавьте это в:

    <!-- 3GB Files / in kilobyte (3072*1024) -->
    <httpRuntime targetFramework="4.5" maxRequestLength="3145728"/>

и это под

<security>
    <requestFiltering>

      <!-- 3GB Files / in byte (3072*1024*1024) -->
      <requestLimits maxAllowedContentLength="3221225472" />

    </requestFiltering>
</security>

Вы видите в комментарии, как это работает. В одном вы должны иметь sie в байтах, а в другом - в килобайтах. Надеюсь, это поможет.

2 голосов
/ 28 мая 2014

Вы можете написать этот блок кода в файле web.config вашего приложения.

<httpRuntime maxRequestLength="2048576000" />
<sessionState timeout="3600"  />

Написав этот код, вы можете загрузить файл большего размера, чем сейчас

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