微立顶科技

新闻资讯

创新 服务 价值

  设置IIS7文件上传的最大大小 maxAllowedContentLength,maxRequestLength

发布日期:2022/7/4 15:15:08      浏览量:

当上传一个超过30M的文件时,服务器会重定向至404.13页面,报错以下:web

HTTP Error 404.13 - Not Found

The request filtering module is configured to deny a request that exceeds the request content length.服务器

这是因为服务器限制了所能上传文件的最大值。其值在configuration/system.webServer/security/requestFiltering/requestLimits@maxAllowedContentLength setting in the applicationhost.config or web.config file. 中定义。app

查看C:\Windows\System32\inetsrv\config目录下的applicationhost.config,能够在system.webServer/security/requestFiltering/中找到requestLimits设置项,若没有,则能够自行添加以下:(这里maxAllowedContentLength的单位为bytes。)ide

<system.webServer>
   <security>
       <requestFiltering>
              <requestLimits maxAllowedContentLength="40000000" />
       </requestFiltering>
   <security>
<system.webServer>post

也能够使用命令行模式修改applicationhost.config为:

%windir%\system32\inetsrv\appcmd set config -section:requestFiltering -requestLimits.maxAllowedContentLength:40000000

通过这个设置后,服务器对上传文件的大小限制将变为40000000bytes了。固然,这个设置是服务器级别的,若是你想在某个站点或者某个应用上限制大小,也能够经过以相同方式进行设置,只不过此次设置的是站点内的Web.config。命令行

可是你要进行此项修改,要确保applicationhost.config中对该项修改的权限已经放开。可经过以下设置进行更改:code

modify the overrideModeDefault from "Deny" to "Allow" like so:orm

<sectionGroup name="system.webServer">
     <section name="requestFiltering" overrideModeDefault="Allow" />
</sectionGroup>

确认修改过applicationhost.config中上述设置之后,再进行以下设置。

找到应用的Web.config,按上述进行修改:

<system.webServer>
   <security>
       <requestFiltering>
              <requestLimits maxAllowedContentLength="40000000" />
       </requestFiltering>
   <security>
<system.webServer>

或者你也能够经过命令行的形式:

%windir%\system32\inetsrv\appcmd set config "Default Web Site/<your app>" -section:requestFiltering -requestLimits.maxAllowedContentLength:40000000

这样,你就能针对某个站点的某个应用进行设置。

 

可是开发人员是在Web.Config中进行了以下设置:

<system.web>

<httpRuntime maxRequestLength="40960" appRequestQueueLimit="100" useFullyQualifiedRedirectUrl="true" executionTimeout="120" />

</system.web>

这里的maxRequestLength据MSDN介绍:Gets or sets the maximum request size. The maximum request size in kilobytes. The default size is 4096 KB (4 MB).

The MaxRequestLength property specifies the limit for the buffering threshold of the input stream. For example, this limit can be used to prevent denial of service attacks(拒绝服务攻击) that are caused by users who post large files to the server.

The value assigned to this property should be greater or equal to value assigned to the RequestLengthDiskThreshold property.

可是开发人员的这个设置好像是不起做用的。他们在这里,限制最大请求长度为40MB,超时为120s。

下次再看一下具体这个设置是用来作什么的。

-------------------------

如今明白了。这个是用来设置单个请求的最大长度。好比EmailTicket中若设置maxRequestLength为30M,maxAllowedContentLength为40M,

而后在Reply Email时,选择了一个35M的附件,在点击Save as Draft的时候,这个请求的长度大概会有35M,这个已经超过了maxRequestLength。此时请求就会报错了,结果是黄页:

Server Error in ’/emailticket’ Application.

Maximum request length exceeded.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 
Exception Details: System.Web.HttpException: Maximum request length exceeded.

因此,最好是maxRequestLength和maxAllowedContentLength设置为一致的值。



  业务实施流程

需求调研 →

团队组建和动员 →

数据初始化 →

调试完善 →

解决方案和选型 →

硬件网络部署 →

系统部署试运行 →

系统正式上线 →

合作协议

系统开发/整合

制作文档和员工培训

售后服务

马上咨询: 如果您有业务方面的问题或者需求,欢迎您咨询!我们带来的不仅仅是技术,还有行业经验积累。
QQ: 39764417/308460098     Phone: 13 9800 1 9844 / 135 6887 9550     联系人:石先生/雷先生