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

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

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

[ConfigurationPropertyAttribute("maxRequestLength", DefaultValue = )]

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

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

14 ответов


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

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

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


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

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

или в IIS (7):

  • выберите веб-сайт, который вы хотите включить для приема больших загрузок файлов.
  • в главном окне дважды щелкните фильтрация запросов'
  • Выберите "Изменить Настройки Функций"
  • измените " максимально допустимую длину содержимого (байт)"

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

1. Для iis6 или меньше

по умолчанию в ASP.Net максимальный размер файла для загрузки на сервер: вокруг 4 МБ. Это значение может быть увеличено путем изменения 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 имеет представил модуль фильтрации запросов.Который выполнялся раньше Аспид.Сеть.Означает, что конвейер работает так, что 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


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

<system.web>

        <httpRuntime maxRequestLength="600000"/>
</system.web>

для максимального ограничения 2 Гб в интернете приложения.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>

Если его windows 2003 / IIS 6.0 затем проверить AspMaxRequestEntityAllowed = "204800" в файле метабазы.в XML находится в папке C:\windows\system32\inetsrv\

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

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

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

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


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


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

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

вы можете написать этот блок кода в веб-приложении.конфигурационный файл.

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

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


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

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

на странице.файл 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 в байтах, а в другом-в килобайтах. Надеюсь, это поможет.


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


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

от модератора:

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


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

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


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

<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>

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