views:

2419

answers:

2

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.

+1  A: 

See my answer here: ASP.NET MVC and httpRuntime executionTimeout

Chris Hynes
+1  A: 

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>
Zhaph - Ben Duguid
You are right, of course. I tried every possible variation ("Picture", "/Picture", "Picture/", "/Picture/", "Views/Picture" etc.), but when posting my question I chose "/Picture/", which was obviously wrong. However, it didn't work for some other reason. I refactored the code (changed the way the parameters were supplied - now as querystring parameters) and it started to work properly, but I'm not quite sure what the problem was. :-( Thanks anyway! :-)
Alex42