哪个优先,maxRequestLength 或 maxAllowedContentLength?

Posted

技术标签:

【中文标题】哪个优先,maxRequestLength 或 maxAllowedContentLength?【英文标题】:Which gets priority, maxRequestLength or maxAllowedContentLength? 【发布时间】:2011-06-13 07:01:22 【问题描述】:

在更改允许上传的最大文件大小时,我偶然发现了这两个设置。

sytem.web 中有 http 运行时 节点和 ma​​xRequestLength。 在 system.webServer 中有 requestLimitsma​​xAllowedContentLength

现在哪个优先于另一个?我们需要同时设置两者还是最后一个(IIS7 的那个)是否足够?

【问题讨论】:

【参考方案1】:

maxRequestLength 表示 ASP.NET 支持的最大请求大小,而 maxAllowedContentLength 指定 IIS 支持的请求中内容的最大长度。因此,您需要同时设置两者才能上传大文件:较小的“优先”。

(我从http://forums.iis.net/t/1169846.aspx 收到了这个——归功于它的到期位置。)

您可以通过编辑相应的 web.config 文件将两者都设置为特定站点的本地,甚至是站点内的文件夹。如果文件(好吧,请求)长度小于 maxAllowedContentLength 但大于 maxRequestLength,用户将获得您的标准 (ASPX) 错误页面(如果有)。如果反过来,他会得到一个 IIS 错误页面。因此,您可能希望将 maxAllowedContentLength 设置为一个非常大的值(仅针对此网站/文件夹),然后将限制值设置为 maxRequestLength。

最后,请记住 maxRequestLength 以 KB 为单位,而 maxAllowedContentLength 以 BYTES 为单位!

【讨论】:

我的页面中有 3 个上传控件,其中上传控件的限制为 50 MB。所以我一次上传总共 150 MB,我的配置是 maxAllowedContentLength="51200000" & executionTimeout="1200" & maxRequestLength="51200"。我应该在这里更改哪个长度。请提出建议。【参考方案2】:

简短而甜蜜的答案是两者中较小的一个将优先。不过有一点建议——在我看来,最好将 maxRequestLength 设置为两者中的较小者,因为如果超过了 Global.asax,您可以在 Application_Error 事件中捕获异常。如果超过 maxAllowedContentLength,首先 IIS 将处理它而不是 ASP.NET,这使得在代码中处理起来更加棘手。

【讨论】:

以上是关于哪个优先,maxRequestLength 或 maxAllowedContentLength?的主要内容,如果未能解决你的问题,请参考以下文章

aspnet:MaxJsonDeserializerMembers 与 maxRequestLength

maxRequestLength的最大值?

ASP.net HTTP 404 - 找不到文件而不是 MaxRequestLength 异常

哪个路径是 Java 中的第一优先级?

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

c# mvc文件上传大小限制maxrequestLength和maxAllowedContentLength的具体含义