文件大小限制上传在ASP.NET MVC:在web.config中超过1个maxRequestLen

2019-06-24 02:16发布

我想有超过1所设定的maxRequestLength - 文件大小限制上传(例如,一个用于文件/新建,另一个用于图片/新建)。 我的所有操作采取额外的参数(例如/文件/新建?folderId = 234)。

单设置按预期工作:

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

我想有2个设置在根web.config 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文件中的特定视图文件夹(如/视图/图片/ ...),就像它在经典的Webform ASP.NET,但这似乎并没有做任何的伎俩......

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

无论我做什么,只有一个httpRuntime.maxRequestLength值应用于 - 在(根)web.config中...... System.Web程序。

Answer 1:

见我的答案在这里: ASP.NET MVC和的httpRuntime executionTimeout



Answer 2:

我相信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的不应该有<位置>元素。

这应该排序你出去。

对于该文档位置元素 ,即使有这样的非常例子:

下面的代码示例演示了如何设置上传文件大小限制为128 KB只有指定的页面。

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


Answer 3:

该解决方案是不完整的,因为IIS 7的“请求筛选”设置默认限制为30MB。 你应该增加这个参数,详见技术我的博文



文章来源: file size upload limitation in ASP.NET MVC: more than 1 maxRequestLength setting in web.config(s)