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

.NET 6 Web API读取x-www-form-urlencoded数据为空,求排查

ASP.NET WebAPI (.NET 6) 读取x-www-form-urlencoded请求体为空的排查方案

你的代码逻辑本身没有问题,出现属性绑定为空的情况,大概率是请求发送环节或路由配置的问题,以下是具体排查方向和解决方法:

1. 修正请求体的参数分隔符

你的请求示例中出现了&(HTML转义后的&),这是错误的格式。ASP.NET解析x-www-form-urlencoded格式时,必须使用原始的&作为参数分隔符。如果请求体中写的是empId=xxx&firstName=fName&lastName=lName,框架会将其解析为不完整的键值对,导致无法匹配TestObj的属性。

正确的请求体内容应为:

empId=xxx&firstName=fName&lastName=lName

2. 确认控制器路由前缀匹配

你的请求路径是/MyController/v1/Test,需确保控制器类上配置了对应的路由前缀,示例如下:

[ApiController]
[Route("MyController/v1")] // 必须添加该前缀才能匹配请求路径
public class MyController : ControllerBase
{
    // 你的Test方法代码
}

如果未配置该前缀,实际可访问路径应为/Test,不过你的请求返回了200,说明路由已匹配,可快速验证此配置。

3. 规范请求发送方式(以Postman为例)

避免在Raw标签下手动编写表单内容,直接切换到x-www-form-urlencoded标签,手动添加empId、firstName、lastName三个键值对。Postman会自动处理正确的编码和分隔符,避免手动编写带来的格式错误。

4. 清除请求体中的多余字符

你的请求头中Content-Length: 40,但正确的参数内容长度仅为31,说明请求体中可能包含换行、空格等不可见字符,这些字符会干扰ASP.NET的表单解析。请删除请求体中的多余换行或空格,确保内容紧凑。

按上述调整后重新发送请求,即可正常绑定TestObj的属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 04:18:16