I need to test a file upload component that will be accepting very large files. I want to test locally in my development environment but since I use IIS Express instead of IIS 7 I am not sure where to make the global change.
In IIS 7 the change cannot be made via the web.config but needs to be changed through the IIS Manager Tool. See this IIS article for an example.
Does anyone know how to make the same global change using IIS Express (in Visual Studio 2013)?
If the web.config change ppascualv suggested doesn't work, try putting it in the IIS Express applicationhost.config, which can be found at
%userprofile%\my documents\iisexpress\config\applicationhost.config
under
<system.webServer>
put
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="524288000"/>
</requestFiltering>
</security>
This should set it as a global, unless a web.config from an application overrides it.
You basically need to set both in web.config maxRequestLength and maxAllowedContentLength to upload files.
maxRequestLength Indicates the maximum file upload size supported by ASP.NET
maxAllowedContentLength This specifies the maximum length of content in a request supported by IIS.
Note:maxRequestLength is in kilobytes & maxAllowedContentLength is in Bytes
By default, Machine.config is configured to accept HTTP Requests upto 4096 KB (4 MB) and it is reflected in all your ASP.NET applications. You can change the Machine.config file directly, or you can change only the Web.config file of the application(s) you want to
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="524288000"/>
</requestFiltering>
</security>
</system.webServer>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
</system.webServer>
As others mentioned already you need to modify applicationhost.config and put into it
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="524288000"/>
</requestFiltering>
</security>
What other people didn't mention is that when you are running your web app from Visual Studio, the location of applicationhost.config in the root directory of your project is
.vs\{your_project_name}\config\applicationhost.config and this is the file you will need to modify
You can use this in web.config
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="524288000"/>
</requestFiltering>
</security>
</system.webServer>
Working to get around the "400 Bad Request" due to request headers that are too big, against the Visual Studio 2019's default IIS Express instance, I couldn't get Sarah's solution to work, but found that the http.sys settings here did the trick.
Specifically, I created inside HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters a DWORD registry value called MaxRequestBytes and setting it to a large enough value. For me, 33000 was enough. Also created MaxFieldLength in the same place, and set it to 33000. A machine reboot is mandatory for the setting to become effective.
As for the cause of my problem, it's described here. It's essentially caused by authentication cookies that get placed inside the request headers. Pushing to an Azure App Service works just fine (the limit for the headers there is probably 32KB), but against the local IIS Express, it failed continuously, until the fix described above.
Related
I have seen many questions asking the same thing, and this trick seemed to work for them, but not in my case.
I have been tasked with setting up a webpage on a company's server for training videos. I can't embed them from a site such as YouTube because they contain sensitive information.
The webpage has been set up using Joomla on Windows Server 2012. This is the first time I've ever experienced IIS since I only have experience with Apache.
The files I am trying to upload are just under 1GB. When I attempt to upload, I get Error Total size of upload exceeds the limit.
Here is what I have placed in the web.config file (since there isn't a php.ini file):
<configuration>
<system.web>
<!-- this is my edit -->
<httpRuntime maxRequestLength="2097151" executionTimeout="3600" />
</system.web>
<location path=".">
<system.webServer>
<security>
<requestFiltering>
<!-- this is my other edit -->
<requestLimits maxAllowedContentLength="2147483648" />
</requestFiltering>
</security>
I go into CMD and enter "iisreset" to restart, and it still gives me the same error.
I also found forums where people were advising a change with maxRequestLength, so I also wrote this in the config file:
<system.web>
<httpRuntime maxRequestLength="2097151" executionTimeout="3600" />
</system.web>
Still no dice. The client is becoming very impatient since they still haven't received what they asked for. We originally tried to place the videos on their Wordpress site, but that didn't work either since it is on a shared hosting server.
I found this webpage that instructed me (at the bottom) to run a program on the server, but I don't know how to do that yet. I unzipped it and it opened in Visual Studio. No idea where to go from here. Any help would be appreciated.
I know that this problem has a solution in stackoverflow, but it didn't work for me. I will be more specific below:
I had typical Maximum request length exceeded exception:
HTTP Error 404.13 - Not Found
The request filtering module is configured to deny a request that exceeds the request content length.
That's my changes to web.config, under system.web:
<httpRuntime maxRequestLength="200000" executionTimeout="300" />
and under system.webServer:
<security>
<requestFiltering allowDoubleEscaping="false">
<requestLimits maxAllowedContentLength="200000000" />
</requestFiltering>
</security>
I also made this changes in applicationHost.
On one machine these worked like charm. That was windows 7 + iis 7.5. But on another with windows server 2008 + iis 7.0 I cannot get upload of 19 MB to work. I really dont know what to do now. Please help anyone.
OK. That machine was client's machine. Apparently he changed something in IIS manager regarding one of the site's subfolders and IIS manager created web.config in subfolder that was overriding my setting in parent.
I have been asked to write an application that basically moves files from a source (USB, CD) to a centralized location. Initially this application will be for internal use only but in the future may be needed by remote users. The files I need to move can be in excess of 4-5Gb. It has been suggested I use the Telerik RadAsyncUpload component. Can anyone tell me if I am likely to run into problems trying to upload files of this size using this control?
To allow larger uploads the maxRexquestLength and executionTimeout needs to be added to your web.config:
<system.web>
<httpRuntime targetFramework="4.5" maxRequestLength="5242880" executionTimeout="10800" />
</system.web>
The trickiest part of having this work is that the execution timeout may exceed the upload time required. So set it higher based on your average users bandwidth. We monitor this by logging when the execution timeout occurs and adjusting as needed periodically. Since your app will be internally initially this probably won't be an issue at all if they are transferring over the LAN.
Further info on this is available in the Telerik documentation here.
There are 3 parts on setting the size of the file that could be uploaded through RadAsyncUpload:
1) Setting the file size in the telerik control
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="100000000" />
</requestFiltering>
</security>
2)Configures ASP.NET HTTP runtime settings, to allow the http Request message to be able to include your file. Here we need to set the maxRequestLength and executionTimeout accordingly.
<system.web><httpRuntime targetFramework="4.5" maxRequestLength="102400" executionTimeout="2147483647" /></system.web>
3)IIS server would generally allow only 30MB of file to be uploaded. To be able to upload larger files, we need to make some other settings in the web.config , to increase the request limits.
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="100000000" />
</requestFiltering>
</security>
I'm getting "Content too large" errors at ~ 120MB. Is this a hard limit or is it possible to extend via settings?
ASFAIK, there are no hard limits at the content porter level. However, IIS has default 30 MB limit on file uploads. You can increase the value in web.config to higher value based on your needs.
Reference Link on increasing the limit: http://sdllivecontent.sdl.com/LiveContent/content/en-US/SDL_ContentPorter_2009_SP1/task_CCFED8DFFA9A4E138DEA72FBDF4C18AD
<system.web>
<httpRuntime maxRequestLength="209715200"/>
</system.web>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="209752100" />
</requestFiltering>
</security>
The above config value in web.config will set the limit to 200 MB.
Do not forget to start the Tridion core services, content porter service and IIS reset after the changes done.
Hope this information helps.
I have a page on my ASP.NET site which uploads files.
I have attempted to tweak the web.config file to allow for larger uploads.
In my web.config, I set:
<httpRuntime maxRequestLength="2097152" executionTimeout="3600" />
On my page, when I attempt to upload smaller files, no issue...even at 25MB.
However, when I attempt to upload a 50MB file, I still get a 404 error page.
NOTE: I have a flash control on a different page which can upload almost 2gb with no issues, using this same web.config setting.
Same result on different PCs, same result when posted to different web servers.
My web server is Windows Server 2008 R2.
Any ideas of the cause? Why would flash be ok, but plain jane upload control have this problem?
I found the answer. Windows Server 2008 R2 is using IIS7 (of course), and in IIS7, you have to set the following in your web.config file (in my example to increase the limit to 2gb):
<system.webserver>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483648" />
</requestFiltering>
</security>
<system.webserver>
This worked, when everything else didn't. IIS7 by default limits uploads to 30mb unless this override is set.
The executionTimeout applies only if the debug attribute in the compilation element is False. (see also http://msdn.microsoft.com/en-us/library/e1f13641.aspx)
So try it when starting your application in Release config.