17

我想为 maxRequestLength 设置超过 1 个设置 - 文件大小上传限制(例如,一个用于 File/New,另一个用于 Picture/New)。我的所有操作都采用附加参数(例如 /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 值被应用——在(根)web.config...system.web 中。

4

1 回答 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 不应包含 <location> 元素。

那应该让你解决。

Location 元素的文档甚至有这个例子:

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

<configuration>
  <location path="UploadPage.aspx">
    <system.web>
      <httpRuntime maxRequestLength="128"/>
    </system.web>
  </location>
</configuration>
于 2009-06-25T22:30:13.563 回答