ASP.NET上传大小限制修改无效,报Maximum request length exceeded错误
解决ASP.NET上传时“Maximum request length exceeded”错误的完整方案
我之前也碰到过一模一样的问题!光照搬技术资料里的一两行配置确实经常踩坑,得把几个关键环节都盯紧,给你列一下最容易遗漏的排查点:
1. 检查Web.config里的两个核心配置节点
很多人只加了httpRuntime却忘了IIS层面的requestLimits,这俩得配合着来:
传统ASP.NET核心配置(system.web节点)
这个是ASP.NET框架本身的请求长度限制,单位是KB,比如设置100MB的话就是1024*100=102400,同时建议加长超时时间避免上传超时:
<configuration> <system.web> <httpRuntime maxRequestLength="102400" executionTimeout="3600" /> </system.web> </configuration>
IIS请求筛选配置(system.webServer节点)
这个是IIS服务器层面的内容长度限制,单位是字节,同样100MB的话就是1024*1024*100=104857600,必须和上面的配置值对应:
<configuration> <system.webServer> <security> <requestFiltering> <requestLimits maxAllowedContentLength="104857600" /> </requestFiltering> </security> </system.webServer> </configuration>
⚠️ 注意:千万别搞混单位!很多人就是这里单位错配,导致配置完全不生效。
2. 控制器Action的特性限制(针对MVC/Web API)
如果你的上传逻辑写在MVC控制器或者Web API的Action里,还要在对应方法上额外添加请求大小限制特性:
[HttpPost] [RequestSizeLimit(104857600)] // 100MB,单位字节 public ActionResult UploadFile(HttpPostedFileBase file) { // 你的上传逻辑代码 }
如果是测试环境想临时取消限制(不建议生产环境用),可以用[DisableRequestSizeLimit]替代上面的特性。
3. IIS服务器层面的全局配置检查
有时候Web.config的配置会被IIS站点的全局设置覆盖,手动确认一下:
- 打开IIS管理器,找到你的目标站点
- 点击“请求筛选”功能,右侧选择“编辑功能设置”
- 确认“最大允许内容长度”的值和Web.config里的
maxAllowedContentLength完全一致
4. 表单上传的必要属性
如果是用HTML表单提交文件,务必确保表单标签加了enctype="multipart/form-data":
<form action="/Upload/File" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <button type="submit">上传文件</button> </form>
虽然这个不直接触发长度错误,但缺少它会导致文件无法正确解析提交。
5. 别忘了重启应用池/IIS
改完Web.config或者IIS配置后,一定要重启对应的应用池或者整个IIS!我当初就是改完没重启,白折腾了半小时😂
你按这个顺序排查下来,应该就能解决问题了,大概率是某个配置漏加或者单位搞错了。
内容的提问来源于stack exchange,提问作者fonefix
相关产品推荐
相关产品推荐

