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

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

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

[ConfigurationPropertyAttribute("maxRequestLength", DefaultValue = )]

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

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

Ответ 1

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

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

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

Ответ 2

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

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

Или в IIS (7):

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

Ответ 3

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

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

Ответ 4

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

<system.web>

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

Ответ 5

для максимального предела 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>

Ответ 6

Если его окна 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. Это. Поэтому я оставляю ответ здесь.

Ответ 7

У меня такая же проблема на сервере 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.

Ответ 8

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

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

Ответ 9

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

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

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

Ответ 10

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

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

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

Ответ 11

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

Ответ 12

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

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

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

Ответ 13

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

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

Ответ 14

Максимальный размер файла может быть ограничен одним контроллером 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.