Is there a way to ignore the maxRequestLength limit of 2GB file uploads?
Solution 1
Considering the Type of MaxRequestLength is a Int, at the moment there is no way to parse a value higher than Int.Max correctly.
I heard they might be increasing IIS8 but nothing concrete from Microsoft as of yet. The only way I've seen in .Net 4.5 is to use HttpRequest.GetBufferlessInputStream which
Gets a Stream object that can be used to read the incoming HTTP entity body, optionally disabling the request-length limit that is set in the MaxRequestLength property.
Solution 2
In my case these were the changes I needed to apply:
<system.web>
<httpRuntime targetFramework="4.6.1" maxRequestLength="2147483647" />
</system.web>
<system.webServer>
<serverRuntime uploadReadAheadSize="2147483647" />
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483647" />
</requestFiltering>
</security>
</system.webServer>
In order to add the serverRuntime follow the intructions in the first answer of this question
Steven
Updated on August 16, 2020Comments
-
Steven over 3 years
Here's where I'm setting
maxRequestLength
to 2GB (the max value), which indicates the maximum request size supported by ASP.NET:<system.web> <httpRuntime maxRequestLength="2097151" executionTimeout="3600"/> ...
and here I'm setting the
maxAllowedContentLength
to 4GB (the max value), which specifies the maximum length of content in a request supported by IIS<system.webServer> <security> <requestFiltering> <requestLimits maxAllowedContentLength="4294967295"/> </requestFiltering> </security> ...
I'd like to be able to upload files up to 4GB, but I'm limited by the
maxRequestLength
field.I noticed that this third party upload tool (http://www.element-it.com/onlinehelp/webconfig.html) has a
ignoreHttpRuntimeMaxRequestLength
property, which allows it to upload files up to 4GB.Does anyone know if I can ignore the
maxRequestLength
value like this other upload tool does? -
vane over 11 yearsGood point, I didn't realize
maxRequestLength
wasint
and notuint
. It would kind of make more sense for it to be auint
since your request length can never be negative. -
IT Hit WebDAV over 10 yearsAs far as I understand Microsoft fixed ASP.NET upload limit but did not fix IIS: aspnet.uservoice.com/forums/41199-general-asp-net/suggestions/…
-
poizan42 about 6 yearsMaxRequestLength is in KB, the max value is 2 TB not GB. This is not the problem, but the fact that the normal buffered input stream as well as all as the multipart formdata parser etc. breaks down on more than 2GB. The only way around it is really GetBufferlessInputStream and parsing the request yourself.
-
Erik Philips about 6 years@poizan42 Yes, however maxAllowedContentLength is a UINT in bytes, so the max appears to be 4gb.
-
poizan42 about 6 yearsYes, however note that you can get rid of that by removing the RequestFilteringModule altogether from your site. After that you start hitting issues with the ASP.NET ISAPI modules failing on Content-Length headers larger than MAX_UINT because they insists on parsing it before handing off to your code. I got around it by using a rewrite rule to remove the Content-Length header (saving it in a server variable first). After that you need to read the request directly using a HttpWorkerRequest.
-
Erik Philips about 6 years@poizan42 Good information, you may want to write your own answer here! (I would suggest it)