ASP.NET Core 7提交大数据更新请求返回HTTP 400错误排查
问题原因
ASP.NET Core 默认对 x-www-form-urlencoded 格式的 POST 请求设置了大小限制,当提交的数据量超过阈值时,服务器会直接返回 HTTP 400 错误,且不会进入你的控制器 POST 方法,这就是你遇到的核心问题。
解决方案
你可以通过以下两种方式调整表单请求的大小限制:
1. 全局配置(应用于所有请求)
在 Program.cs 中添加表单选项配置,全局调整所有表单请求的大小限制:
builder.Services.Configure<FormOptions>(options => { // 设置单个表单值的最大长度,单位:字节(示例为100MB) options.ValueLengthLimit = 104857600; // 如果涉及多部分表单(如文件上传),需同时调整此值 options.MultipartBodyLengthLimit = 104857600; // 设置内存缓冲区阈值,超过后会写入磁盘 options.MemoryBufferThreshold = 104857600; });
2. 局部配置(仅针对特定控制器/方法)
如果只想针对这个 Edit 方法调整限制,可在 POST 方法上添加 [RequestFormLimits] 特性:
[Authorize] [HttpPost] [ValidateAntiForgeryToken] [RequestFormLimits(ValueLengthLimit = 104857600)] // 100MB,按需调整 public async Task<IActionResult> Edit(ReticleSetEntity entity) { if (ModelState.IsValid) { // ... 原有逻辑 } // ... 原有逻辑 }
额外说明
- Postman 能正常请求可能是因为测试数据未达到实际限制,或是 Postman 的请求处理逻辑与浏览器表单提交存在差异,但核心问题仍需通过调整上述配置解决。
- 调整限制时请根据实际业务需求设置合理值,避免过大导致服务器资源占用过高。
内容的提问来源于stack exchange,提问作者Kieran
相关产品推荐
相关产品推荐

