ASP.NET MVC5:如何通过web.config为特定页面修改上传限制
仅通过web.config为特定上传Action提升文件大小限制
可以实现,但你之前的配置方向有误——web.config的<location>标签是针对请求的目标URL生效的,而非分部视图或包含它的页面路径。上传请求是发送到处理上传的控制器Action,而非分部视图所在的页面,所以需要把<location>指向该Action的路由路径,而非视图路径。
具体配置步骤
- 保留根节点下的默认20MB限制(确保其他页面不受影响):
<configuration> <!-- 全局默认配置:20MB --> <system.web> <httpRuntime maxRequestLength="20480" /> <!-- 单位:KB,20*1024=20480 --> </system.web> <system.webServer> <security> <requestFiltering> <requestLimits maxAllowedContentLength="20971520" /> <!-- 单位:字节,20*1024*1024=20971520 --> </requestFiltering> </security> </system.webServer>
- 添加
<location>节点,针对处理上传的控制器Action单独配置100MB限制:
假设你的上传Action路由是/FileUpload/Upload(对应FileUploadController的Upload方法),则添加如下配置:
<!-- 针对特定上传Action的100MB限制 --> <location path="FileUpload/Upload"> <system.web> <httpRuntime maxRequestLength="102400" /> <!-- 100*1024=102400 KB --> </system.web> <system.webServer> <security> <requestFiltering> <requestLimits maxAllowedContentLength="104857600" /> <!-- 100*1024*1024=104857600 字节 --> </requestFiltering> </security> </system.webServer> </location> </configuration>
关键说明
<location>的path属性必须和上传请求的实际URL完全匹配:如果你的Action有自定义路由(比如带前缀或参数),需要调整path值,比如路由是/Api/File/Upload,则path="Api/File/Upload"。- 必须同时配置
maxRequestLength(ASP.NET框架层面的限制)和maxAllowedContentLength(IIS层面的限制),两者缺一不可,且单位要对应转换正确。 - 之前配置视图路径无效的原因:访问包含分部视图的页面是GET请求,路径对应页面的路由,而上传是POST请求到控制器Action的路由,这是两个不同的请求路径,所以视图路径的
<location>配置不会作用于上传请求。
内容的提问来源于stack exchange,提问作者Andrew C
相关产品推荐
相关产品推荐

