.NET Core MVC部署本地IIS后修改日期筛选提交模型为空
问题描述
表单提交后模型返回null,仅在以下特定条件下触发:
- 应用部署至本地IIS服务器时;
- 先修改数据的日期筛选条件后提交表单。
本地运行(非IIS部署)时一切正常,但部署到本地IIS服务器并修改页面日期筛选后就会出现该错误。已获取View、Controller及Model代码,以及服务器远程调试时模型为空和未修改日期时模型正常的对比截图。目前怀疑是提交的数据量过大导致模型为空,寻求解决方案。
可能的解决方案
1. 调整IIS请求长度限制
IIS默认对请求大小有限制,当提交数据量超过阈值时会截断请求,导致模型绑定失败。可通过两种方式修改:
- 图形化操作:打开IIS管理器,找到目标站点,进入请求筛选功能,切换到请求限制选项卡,勾选「允许超出限制的内容长度」,设置合适的最大内容长度(例如
104857600,即100MB); - 配置文件修改:在站点的
web.config中添加或更新以下节点:
<system.webServer> <security> <requestFiltering> <requestLimits maxAllowedContentLength="104857600" /> </requestFiltering> </security> </system.webServer>
2. 修改ASP.NET框架层面的请求配置
针对ASP.NET MVC项目,还需调整框架自身的请求大小限制:
在web.config的<system.web>节点下添加或修改:
<system.web> <httpRuntime maxRequestLength="102400" executionTimeout="3600" /> </system.web>
说明:
maxRequestLength单位为KB,102400对应100MB;executionTimeout为请求超时时间,可根据实际业务场景调整。
3. 优化表单提交的数据量
若数据量确实过大,建议从根源减少提交数据:
- 检查日期筛选后返回的数据,移除表单中不必要的冗余字段;
- 采用分页提交或异步加载策略,拆分单次提交的数据量;
- 前端将提交数据转为JSON后压缩,后端解压后再进行模型绑定。
4. 排查模型绑定细节
排除数据量问题后,可检查模型绑定的正确性:
- 核对View中表单元素的
name属性与Model的属性名是否完全匹配(注意大小写敏感); - 开启模型绑定日志排查错误,在
web.config中添加:
<system.web> <trace enabled="true" pageOutput="false" requestLimit="100" traceMode="SortByTime" /> </system.web>
通过IIS跟踪日志查看模型绑定过程中的具体错误信息。
内容的提问来源于stack exchange,提问作者Duck__
相关产品推荐
相关产品推荐

