file size upload limitation in ASP.NET MVC: more than 1 maxRequestLength setting in web.config(s)
asp.net-mvc, file-upload, maxrequestlength, web-config
Solution
I believe the Path attribute shouldn't start or end with a "/" - so you should have:
<location path="File">
<system.web>
<httpRuntime executionTimeout="60" maxRequestLength="4096" />
</system.web>
</location>
<location path="Picture">
<system.web>
<httpRuntime executionTimeout="60" maxRequestLength="1024" />
</system.web>
</location>
Your virtual or physical directory–level Web.config's shouldn't have the <location> elements.
That should sort you out.
The docs for the Location element even have this very example:
The following code example demonstrates how to set the uploaded file size limit to 128 KB for only the page specified.
<configuration>
<location path="UploadPage.aspx">
<system.web>
<httpRuntime maxRequestLength="128"/>
</system.web>
</location>
</configuration>
Problem
I'd like to have more than 1 setting for maxRequestLength - file size upload limitation (e.g. one for File/New, other for Picture/New). All of my Actions take additional parameters (e.g. /File/New?folderId=234). Single setting works as expected: ``` <httpRuntime executionTimeout="60" maxRequestLength="1024" /> ``` I tried to have 2 settings with 2 location sections in the root web.config, but without any success. I'm not sure what to write in "path" - physical aspx page of a view, or controller+action... however, nothing seems to work. ``` <location path="/File/"> <system.web> <httpRuntime executionTimeout="60" maxRequestLength="4096" /> </system.web> </location> <location path="/Picture/"> <system.web> <httpRuntime executionTimeout="60" maxRequestLength="1024" /> </system.web> </location> ``` I tried to put another web.config in a specific view folder (e.g. /Views/Picture/...), like it works in classic Webform ASP.NET, but this doesn't seem to do the trick either... ``` <location path=""> <system.web> <httpRuntime executionTimeout="60" maxRequestLength="1024" /> </system.web> </location> ``` No matter what I do, only one value for httpRuntime.maxRequestLength is applied - that in (root) web.config...system.web.