How to increase the max upload file size in ASP.NET?
Asked Answered
T

14

271

I have a form that excepts a file upload in ASP.NET. I need to increase the max upload size to above the 4 MB default.

I have found in certain places referencing the below code at msdn.

[ConfigurationPropertyAttribute("maxRequestLength", DefaultValue = )]

None of the references actually describe how to use it, and I have tried several things with no success. I only want to modify this attribute for certain pages that are asking for file upload.

Is this the correct route to take? And how do I use this?

Thumbprint answered 13/11, 2008 at 22:44 Comment(2)
Are you sure it is a code limitation, and not a host limitation? IIS has a limit as well.Bowknot
I was pretty sure it is was a .Net limitation. The answer below worked for me.Thumbprint
D
448

This setting goes in your web.config file. It affects the entire application, though... I don't think you can set it per page.

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

"xxx" is in KB. The default is 4096 (= 4 MB).

Dowser answered 13/11, 2008 at 22:56 Comment(7)
This got me working for site wide. I set it to 10240 (or 10 MB) for now. Thanks!Thumbprint
See my answer if you are running IIS7+ and this is not working.Polished
Is it possible to restrict this to one controller ?Josephus
@Thumbprint i have two web.config Files i used it in both but it doesn't work . how can i do it ?Succinctorium
This is possible to do on a specific path aswell. <location path="Api/Controller"> <system.web> <authorization> <allow users="*" /> </authorization> <httpRuntime maxRequestLength="102400" /> </system.web> </location> (authorization tag not needed)Contortive
Yes, it is possible to add on Controller Action. Please see my code.Motherwort
Why would I restrict the upload size in the first place? What could happen if I set it to allow 100GB?Truscott
P
203

For IIS 7+, as well as adding the httpRuntime maxRequestLength setting you also need to add:

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

Or in 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)"
Polished answered 30/8, 2013 at 10:46 Comment(7)
I forgot about kilobytes :pShushubert
you will likely need to set both maxRequestLength and maxAllowedContentLength to get it to work...see #6327952Aracelyaraceous
@AndrewMyhre maxAllowedContentLength is in bytes, not KB. Microsoft docs say default is 30 MB.Moira
@DanRandolph actually the default is 30000000 (approximately 28.6MB), as documented at iis.net/configreference/system.webserver/security/…Cinnamon
You definitely need both settings.Buggs
Be careful here if you change it on IIS. It will do an IIS Reset when you change this value!Ingrid
i have iis 10 but this configuration not working . any solution pleaseSuccinctorium
T
90

To increase uploading file's size limit we have two ways

1. IIS6 or lower

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

Example: if you want to restrict uploads to 15MB, set maxRequestLength to “15360” (15 x 1024).

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

2. IIS7 or higher

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

Example : if you want to restrict uploads to 15MB, set maxRequestLength to “15360” and maxAllowedContentLength to "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 Reference link : https://msdn.microsoft.com/en-us/library/e1f13641(VS.80).aspx

Tashinatashkent answered 27/5, 2016 at 5:47 Comment(2)
Does adding your given code in Web.config affect IIS (I mean will there be an IIS Reset if I change this value in Web.config). I am specifically asking for IIS 7.Jeffery
Yes changing web.config generally forces an app pool reset for that application (Apply to 7+ that I am aware of)Milamilady
W
21

for a 2 GB max limit, on your application 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>
Wellgroomed answered 11/9, 2015 at 9:14 Comment(0)
F
20

I believe this line in the Web.config will set the max upload size:

<system.web>

        <httpRuntime maxRequestLength="600000"/>
</system.web>
Finch answered 13/11, 2008 at 22:56 Comment(2)
After spending half of the day this is what helped me !!! Thanks a lot !!!Ticktock
File with any size would be uploaded if I configure your code right ? Will it also work for IIS7 ? Help is appreciated.Jeffery
O
7

If its windows 2003 / IIS 6.0 then check out AspMaxRequestEntityAllowed = "204800" in the file metabase.xml located in folder C:\windows\system32\inetsrv\

The default value of "204800" (~205Kb) is in my opinion too low for most users. Just change the value to what you think should be max.

If you cant save the file after editing it you have to either stop the ISS-server or enable the server to allow editing of the file:

alt text
(source: itmaskinen.se)

Edit: I did not read the question correct (how to set the maxrequest in webconfig). But this informatin may be of interrest for other people, many people who move their sites from win2000-server to win2003 and had a working upload-function and suddenly got the Request.BinaryRead Failed error will have use of it. So I leave the answer here.

Oloughlin answered 13/11, 2008 at 22:52 Comment(0)
M
6

I've the same problem in a win 2008 IIS server, I've solved the problem adding this configuration in the web.config:

<system.web>
    <httpRuntime executionTimeout="3600" maxRequestLength="102400" 
     appRequestQueueLimit="100" requestValidationMode="2.0"
     requestLengthDiskThreshold="10024000"/>
</system.web>

The requestLengthDiskThreshold by default is 80000 bytes so it's too small for my application. requestLengthDiskThreshold is measured in bytes and maxRequestLength is expressed in Kbytes.

The problem is present if the application is using a System.Web.UI.HtmlControls.HtmlInputFile server component. Increasing the requestLengthDiskThreshold is necessary to solve it.

Mongoloid answered 28/3, 2013 at 10:47 Comment(2)
According to msdn.microsoft.com/en-us/library/e1f13641(v=vs.100).aspx "Specifies the limit for the input stream buffering threshold, in kilobytes. This value should not exceed the maxRequestLength attribute." so it should be at most the same as the request length?Competitive
Yes @Jeff, the value of requestLengthDiskThreshold should be smaller than maxRequestLength, but the first is expressed in bytes. If requestLengthDiskThreshold is greater than maxRequestLength a ConfigurationErrorsException should be thrown, so you can test the correct value on your own. See forums.asp.net/t/…Mongoloid
R
6

Max file size can be restricted to a single MVC Controller or even to an Action.
web.config <location> tag can be used for this:

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

Or you can add these entries in area's own web.config.

Reservist answered 5/10, 2018 at 18:3 Comment(1)
This should be higher and used instead of the accepted answer, since this is more secure for validating request size.Garver
W
5

I know it is an old question.

So this is what you have to do:

In you web.config file, add this in <system.web>:

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

and this under <system.webServer>:

<security>
    <requestFiltering>

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

    </requestFiltering>
</security>

You see in the comment how this works. In one you need to have the sie in bytes and in the other one in kilobytes. Hope that helps.

Workout answered 20/7, 2015 at 12:19 Comment(0)
G
4

If you are using Framework 4.6

<httpRuntime targetFramework="4.6.1" requestValidationMode="2.0" maxRequestLength="10485760"  />
Gravure answered 27/9, 2017 at 14:37 Comment(0)
C
2

You can write that block of code in your application web.config file.

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

By writing that code you can upload a larger file than now

Clew answered 28/5, 2014 at 11:19 Comment(0)
L
0

If you use sharepoint you should configure max size with Administrative Tools too: kb925083

Lymphadenitis answered 17/1, 2011 at 10:42 Comment(0)
S
0

I have a blog post on how to increase the file size for asp upload control.

From the post:

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.

Sidesaddle answered 3/4, 2014 at 1:31 Comment(0)
S
0

If it works in your local machine and does not work after deployment in IIS (i used Windows Server 2008 R2) i have a solution.

Open IIS (inetmgr) Go to your website At right hand side go to Content (Request Filtering) Go to Edit Feature Settings Change maximum content size as (Bytes you required) This will work. You can also take help from following thread http://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits

Simard answered 19/3, 2015 at 10:20 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.