ASP.NET MVC中的文件大小上载限制:web.config(s)中的maxRequestLength设置超过1

时间:2009-06-24 14:30:07

标签: asp.net-mvc file-upload web-config maxrequestlength

我想为maxRequestLength设置多个 - 文件大小上传限制(例如,一个用于文件/新建,另一个用于图片/新建)。我的所有操作都采用其他参数(例如/ File / New?folderId = 234)。

单一设置按预期工作:

<httpRuntime executionTimeout="60" maxRequestLength="1024" />

我尝试在根web.config中有2个位置部分的2个设置,但没有任何成功。我不确定在“路径”中写什么 - 视图的物理aspx页面,或控制器+动作......但是,似乎没有任何工作。

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

我试图将另一个web.config放在特定的视图文件夹中(例如/ Views / Picture / ...),就像在经典的Webform ASP.NET中一样,但这似乎也没有。 ..

<location path="">
    <system.web>
        <httpRuntime executionTimeout="60" maxRequestLength="1024" />
    </system.web>
</location>

无论我做什么,只应用httpRuntime.maxRequestLength的一个值 - 在(root)web.config ... system.web中。

3 个答案:

答案 0 :(得分:11)

请在此处查看我的回答:ASP.NET MVC and httpRuntime executionTimeout

答案 1 :(得分:11)

我认为Path属性不应该以“/”开头或结尾 - 所以你应该有:

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

您的虚拟或物理目录级Web.config不应具有&lt; location&gt;元件。

那会让你感到厌烦。

Location element的文档甚至有这样的例子:

  

以下代码示例演示了如何仅将指定页面的上载文件大小限制设置为128 KB。

<configuration>
  <location path="UploadPage.aspx">
    <system.web>
      <httpRuntime maxRequestLength="128"/>
    </system.web>
  </location>
</configuration>

答案 2 :(得分:0)

此解决方案不完整,因为IIS 7默认情况下“请求过滤”设置限制为30Mb。您应该增加此参数,请参阅my blogpost

中的详细信息