You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IIS下请求数组元素数量触发400错误,咨询相关限制

IIS中表单数组元素数量的限制问题解析

IIS及ASP.NET确实存在表单数据中数组元素数量的限制,这和你观察到的现象完全匹配——空/null元素会快速触发限制,而填值后总大小增加却不报错,核心原因是两个不同的配置项在起作用:

1. 表单编码(application/x-www-form-urlencoded)请求场景

如果你的请求是传统表单编码格式,触发400错误的关键限制是aspnet:MaxHttpCollectionKeys,默认值为1000。这个配置统计的是请求中键值对的总数量,数组的每个元素(比如data[0]、data[1])都会被算作独立的键。

  • 当数组元素为空/null时,每个元素都会占用一个键位,单纯增加元素数量很快就会触达1000的上限,触发400错误;
  • 给数组元素填值后,虽然请求总大小变大,但键的数量并没有增加,只要不超过maxHttpCollectionKeys的限制,就不会报错。

修改这个限制的方法是在Web.config的<appSettings>节点中添加或调整配置:

<add key="aspnet:MaxHttpCollectionKeys" value="2000" /> <!-- 可根据实际需求调整数值 -->

2. JSON格式请求场景

如果你的请求是JSON格式,限制来自aspnet:MaxJsonDeserializerMembers,默认值同样是1000。这个配置统计的是JSON对象中的成员总数(包括数组的每个元素),超过阈值就会返回400错误。

修改方式同样在Web.config的<appSettings>中添加:

<add key="aspnet:MaxJsonDeserializerMembers" value="2000" />

注意事项

  • maxRequestLength(ASP.NET层面)和maxAllowedContentLength(IIS层面)是限制请求的总大小,和你遇到的元素数量限制是完全独立的配置,这也是为什么你增加请求总大小却不报错的原因;
  • 调整这些数值时,要兼顾安全性——过大的数值可能增加DOS攻击的风险,建议设置为业务实际需要的最小值。

内容的提问来源于stack exchange,提问作者Richard Pflughoeft

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 12:00:07