У меня есть форма, которая исключает загрузку файла в ASP.NET. Мне нужно увеличить максимальный размер загрузки выше 4 МБ по умолчанию.
Я нашел в некоторых местах ссылку на приведенный ниже код в msdn.
[ConfigurationPropertyAttribute("maxRequestLength", DefaultValue = )]
Ни в одной из ссылок на самом деле не описано, как его использовать, и я пробовал несколько вещей, но безуспешно. Я хочу изменить этот атрибут только для определенных страниц, которые запрашивают загрузку файла.
Это правильный путь? И как мне это использовать?
Я был почти уверен, что это ограничение .Net. Ответ ниже сработал для меня.





Если это Windows 2003 / IIS 6.0, проверьте AspMaxRequestEntityAllowed = "204800" в файле метабаза.xml, расположенном в папке C: \ windows \ system32 \ inetsrv \
Значение по умолчанию «204800» (~ 205 КБ), на мой взгляд, слишком мало для большинства пользователей. Просто измените значение на то, что, по вашему мнению, должно быть максимальным.
Если вы не можете сохранить файл после его редактирования, вам необходимо либо остановить ISS-сервер, либо разрешить ему редактирование файла:

(source: itmaskinen.se)
Обновлено: я неправильно прочитал вопрос (как установить maxrequest в webconfig). Но эта информация может быть интересна другим людям, многие люди, которые переместили свои сайты с win2000-server на win2003 и имели работающую функцию загрузки и внезапно получили ошибку Request.BinaryRead Failed, будут ее использовать. Поэтому я оставляю ответ здесь.
Я считаю, что эта строка в Web.config устанавливает максимальный размер загрузки:
<system.web>
<httpRuntime maxRequestLength = "600000"/>
</system.web>
Вот что мне помогло, потратив полдня !!! Большое спасибо !!!
Файл любого размера будет загружен, если я правильно настрою ваш код? Будет ли это работать и для IIS7? Помощь приветствуется.
Этот параметр находится в вашем файле web.config. Однако это влияет на все приложение ... Я не думаю, что вы можете установить его для каждой страницы.
<configuration>
<system.web>
<httpRuntime maxRequestLength = "xxx" />
</system.web>
</configuration>
«xxx» в килобайтах. По умолчанию - 4096 (= 4 МБ).
Это заставило меня работать на всем сайте. Я пока установил 10240 (или 10 МБ). Спасибо!
См. Мой ответ, если вы используете IIS7 +, и это не работает.
Можно ли ограничить это одним контроллером?
@Eddie У меня есть два файла web.config, я использовал его в обоих, но он не работает. как мне это сделать ?
Это можно сделать и по определенному пути. <location path = "Api / Controller"> <system.web> <authorization> <allow users = "*" /> </authorization> <httpRuntime maxRequestLength = "102400" /> </system.web> </location> (тег авторизации не нужен)
Да, можно добавить действие контроллера. Пожалуйста, посмотрите мой код.
Если вы используете 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, значение requestLengthDiskThreshold должно быть меньше maxRequestLength, но первое выражается в байтах. Если requestLengthDiskThreshold больше, чем maxRequestLength, должно быть сгенерировано исключение ConfigurationErrorsException, чтобы вы могли проверить правильное значение самостоятельно. См. форумы.asp.net/t/…
Для 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
вам, вероятно, потребуется установить и то и другоеmaxRequestLength и maxAllowedContentLength, чтобы заставить его работать ... см. stackoverflow.com/questions/6327452/…
@AndrewMyhre maxAllowedContentLength указывается в байтах, а не в килобайтах. В документах Microsoft указано, что по умолчанию установлено 30 МБ.
@DanRandolph на самом деле по умолчанию 30000000 (примерно 28,6 МБ), как описано в iis.net/configreference/system.webserver/security/…
Вам обязательно понадобятся обе настройки.
Будьте осторожны, если вы измените его на IIS. Когда вы измените это значение, произойдет сброс IIS!
У меня iis 10, но эта конфигурация не работает. любое решение, пожалуйста
У меня есть сообщение в блоге о том, как увеличить размер файла для управления загрузкой 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.
Если вы используете 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 области.
Это должно быть больше и использоваться вместо принятого ответа, поскольку это более безопасно для проверки размера запроса.
Если вы используете сертификат ssl, настройте параметры F5 конвейера ssl.
Вы уверены, что это ограничение кода, а не хоста? У IIS тоже есть ограничение.