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

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

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

[ConfigurationPropertyAttribute("maxRequestLength", DefaultValue = )]

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

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

Вы уверены, что это ограничение кода, а не хоста? У IIS тоже есть ограничение.

MrChrister 14.11.2008 01:51

Я был почти уверен, что это ограничение .Net. Ответ ниже сработал для меня.

Eddie 14.11.2008 02:25
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
248
2
397 331
15
Перейти к ответу Данный вопрос помечен как решенный

Ответы 15

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

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

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

alt text
(source: itmaskinen.se)

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

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

<system.web>

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

Вот что мне помогло, потратив полдня !!! Большое спасибо !!!

Sagar Khatri 22.03.2019 15:08

Файл любого размера будет загружен, если я правильно настрою ваш код? Будет ли это работать и для IIS7? Помощь приветствуется.

Jimesh 12.02.2021 18:02
Ответ принят как подходящий

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

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

«xxx» в килобайтах. По умолчанию - 4096 (= 4 МБ).

Это заставило меня работать на всем сайте. Я пока установил 10240 (или 10 МБ). Спасибо!

Eddie 14.11.2008 02:23

См. Мой ответ, если вы используете IIS7 +, и это не работает.

4imble 30.08.2013 14:48

Можно ли ограничить это одним контроллером?

Guillermo Varini 07.02.2018 01:16

@Eddie У меня есть два файла web.config, я использовал его в обоих, но он не работает. как мне это сделать ?

Ahmad 25.08.2018 16:48

Это можно сделать и по определенному пути. <location path = "Api / Controller"> <system.web> <authorization> <allow users = "*" /> </authorization> <httpRuntime maxRequestLength = "102400" /> </system.web> </location> (тег авторизации не нужен)

nios 29.08.2018 11:14

Да, можно добавить действие контроллера. Пожалуйста, посмотрите мой код.

Malhaar Punjabi 29.04.2019 03:21

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

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

Согласно msdn.microsoft.com/en-us/library/e1f13641(v=vs.100).aspx «Определяет предел для порога буферизации входного потока в килобайтах. Это значение не должно превышать атрибут maxRequestLength». так что он должен быть не больше длины запроса?

Jeff 20.01.2016 22:31

Да @Jeff, значение requestLengthDiskThreshold должно быть меньше maxRequestLength, но первое выражается в байтах. Если requestLengthDiskThreshold больше, чем maxRequestLength, должно быть сгенерировано исключение ConfigurationErrorsException, чтобы вы могли проверить правильное значение самостоятельно. См. форумы.asp.net/t/…

Massimo Zerbini 26.01.2016 18:32

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

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

Или в IIS (7):

  • Select the website you want enable to accept large file uploads.
  • In the main window double click 'Request filtering'
  • Select "Edit Feature Settings"
  • Modify the "Maximum allowed content length (bytes)"

Про килобайты забыл: p

Andrew Myhre 31.01.2014 16:41

вам, вероятно, потребуется установить и то и другоеmaxRequestLength и maxAllowedContentLength, чтобы заставить его работать ... см. stackoverflow.com/questions/6327452/…

MikeM 14.06.2015 21:56

@AndrewMyhre maxAllowedContentLength указывается в байтах, а не в килобайтах. В документах Microsoft указано, что по умолчанию установлено 30 МБ.

Dan Randolph 12.05.2016 22:19

@DanRandolph на самом деле по умолчанию 30000000 (примерно 28,6 МБ), как описано в iis.net/configreference/system.webserver/security/…

aaaantoine 21.07.2016 22:17

Вам обязательно понадобятся обе настройки.

mohrtan 28.07.2017 15:46

Будьте осторожны, если вы измените его на IIS. Когда вы измените это значение, произойдет сброс IIS!

Daniel Lorenz 18.05.2018 15:17

У меня iis 10, но эта конфигурация не работает. любое решение, пожалуйста

Ahmad 20.08.2018 10:58

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

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

By default, the FileUpload control allows a maximum of 4MB file to be uploaded and the execution timeout is 110 seconds. These properties can be changed from within the web.config file’s httpRuntime section. The maxRequestLength property determines the maximum file size that can be uploaded. The executionTimeout property determines the maximum time for execution.

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

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

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

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

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

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

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

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

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

и это под <system.webServer>:

<security>
    <requestFiltering>

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

    </requestFiltering>
</security>

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

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

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

1. IIS6 или ниже

By default, in ASP.Net the maximum size of a file to be uploaded to the server is around 4MB. This value can be increased by modifying the maxRequestLength attribute in web.config.

Remember : maxRequestLenght is in KB

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

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

2. IIS7 или выше

A slight different way used here to upload files.IIS7 has introduced request filtering module.Which executed before ASP.Net.Means the way pipeline works is that the IIS value(maxAllowedContentLength) checked first then ASP.NET value(maxRequestLength) is checked.The maxAllowedContentLength attribute defaults to 28.61 MB.This value can be increased by modifying both attribute in same web.config.

Remember : maxAllowedContentLength is in bytes

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

Влияет ли добавление вашего кода в Web.config на IIS (я имею в виду, произойдет ли сброс IIS, если я изменю это значение в Web.config). Я специально прошу IIS 7.

Jimesh 12.02.2021 17:55

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

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

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

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

Jonathan Ortega 03.07.2019 22:48

Если вы используете сертификат ssl, настройте параметры F5 конвейера ssl.

Другие вопросы по теме