哪个优先,maxRequestLength 或 maxAllowedContentLength?
Posted
技术标签:
【中文标题】哪个优先,maxRequestLength 或 maxAllowedContentLength?【英文标题】:Which gets priority, maxRequestLength or maxAllowedContentLength? 【发布时间】:2011-09-13 17:20:13 【问题描述】:在更改允许上传的最大文件大小时,我偶然发现了这两个设置。
在 sytem.web 中有 http 运行时 节点和 maxRequestLength。 在 system.webServer 中有 requestLimits 和 maxAllowedContentLength。
现在哪个优先于另一个?我们需要同时设置两者还是最后一个(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
ASP.net HTTP 404 - 找不到文件而不是 MaxRequestLength 异常
ASP.NET MVC 中的文件大小上传限制:web.config(s) 中的 maxRequestLength 设置超过 1 个