Как увеличить максимальный размер загружаемого файла в ASP.NET?

205

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

В некоторых местах я нашел ссылки на приведенный ниже код msdn.

[ConfigurationPropertyAttribute("maxRequestLength", DefaultValue = )]

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

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

  • 0
    Вы уверены, что это ограничение кода, а не ограничение хоста? У IIS также есть предел.
  • 0
    Я был почти уверен, что это ограничение .Net. Ответ ниже работал для меня.
Теги:
file-upload

14 ответов

378
Лучший ответ

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

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

"xxx" находится в КБ. Значение по умолчанию - 4096 (= 4 МБ).

  • 5
    Это заставило меня работать на весь сайт. Я установил его на 10240 (или 10 МБ) на данный момент. Спасибо!
  • 10
    Смотрите мой ответ, если вы используете IIS7 +, и это не работает.
Показать ещё 4 комментария
154

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

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

Или в IIS (7):

  • Выберите веб-сайт, который вы хотите включить, чтобы принимать большие загрузки файлов.
  • В главном окне дважды щелкните "Фильтрация запросов".
  • Выберите "Редактировать настройки функции"
  • Изменить "Максимально допустимая длина содержимого (в байтах)"
  • 4
    Я идиот или 52428800 байт не 50 ГБ?
  • 2
    @AndrewMyhre: вы определенно не идиот :-) 50 МБ будет 51200 кБайт ....
Показать ещё 8 комментариев
57

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

1. IIS6 или ниже

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

Помните: maxRequestLenght находится в KB

Пример: если вы хотите ограничить загрузку до 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.Means, как работает трубопровод, является то, что 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

14

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

<system.web>

        <httpRuntime maxRequestLength="600000"/>
</system.web>
  • 0
    Проведя половину дня вот что мне помогло !!! Большое спасибо !!!
9

для максимального предела 2Gb, в вашем приложении 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

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

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

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

alt text http://blogs.itmaskinen.se/image.axd?picture=WindowsLiveWriter/Request.BinaryReadFailedwindows2003IIS.0_BC5A/image_2.png

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

4

У меня такая же проблема на сервере IIS win 2008, я решил проблему с добавлением этой конфигурации в 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. Для его решения необходимо увеличить requestLengthDiskThreshold.

  • 1
    Согласно msdn.microsoft.com/en-us/library/e1f13641(v=vs.100).aspx «Указывает ограничение для порога буферизации входного потока в килобайтах. Это значение не должно превышать атрибут maxRequestLength». так что это должно быть не больше, чем длина запроса?
  • 0
    Да @Jeff, значение requestLengthDiskThreshold должно быть меньше, чем maxRequestLength, но первое выражается в байтах. Если requestLengthDiskThreshold больше, чем maxRequestLength, должно быть выдано исключение ConfigurationErrorsException, чтобы вы могли самостоятельно проверить правильное значение. Смотрите форумы.asp.net/t/…
3

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

<httpRuntime targetFramework="4.6.1" requestValidationMode="2.0" maxRequestLength="10485760"  />
2

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

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

В файле 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

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

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

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

0

Максимальный размер файла может быть ограничен одним контроллером MVC или даже действием.
Для этого можно использовать тег web.config <location>:

<location path="YourAreaName/YourControllerName>/YourActionName>">
  <system.web>
    <!-- 15MB maxRequestLength for asp.net, in KB 15360 -->
    <httpRuntime maxRequestLength="15360" />
  </system.web>
  <system.webServer>
    <security>
      <requestFiltering>
        <!-- 15MB maxAllowedContentLength, for IIS, in bytes 15728640 -->
        <requestLimits maxAllowedContentLength="15728640" />
      </requestFiltering>
    </security>
  </system.webServer>
</location>

Или вы можете добавить эти записи в область собственного web.config.

0

Если он работает на вашем локальном компьютере и не работает после развертывания в IIS (я использовал Windows Server 2008 R2), у меня есть решение.

Открыть IIS (inetmgr) Перейти на ваш сайт С правой стороны перейдите в Content (Request Filtering) Перейдите в раздел "Настройки параметров редактирования" Измените максимальный размер контента как (байты, которые вам нужны) Это сработает. Вы также можете воспользоваться помощью следующей нити http://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits

0

У меня есть сообщение в блоге о том, как увеличить размер файла для управления загрузкой asp.

Из сообщения:

По умолчанию элемент управления FileUpload позволяет загружать максимум 4 МБ файла и выполнять  таймаут - 110 секунд. Эти свойства могут быть изменены из раздела httpRuntime файла web.config. Свойство maxRequestLength определяет максимальный размер файла, который можно загрузить.  Свойство executeTimeout определяет максимальное время выполнения.

0

Если вы используете sharepoint, вы также должны настроить максимальный размер с помощью административных инструментов: kb925083

Ещё вопросы

Сообщество Overcoder
Наверх
Меню