ASP.NET WEB API POST请求[FromBody]参数为null问题排查求助
问题排查解决方案
以下是导致你POST参数为null的常见原因及修复方案:
- 入参使用了接口类型导致模型绑定失败
Web API默认的模型绑定器无法直接实例化接口类型IOrder,你需要将服务端Action的入参替换为IOrder对应的具体实现类,示例修改如下:
[HttpPost] [Route("api/order/createorder")] public HttpResponseMessage AddOrder([FromBody]Order order) // 将IOrder替换为你的实现类名 { // 原有逻辑不变 }
- 请求头缺少正确的Content-Type配置
虽然AddJsonBody方法默认会自动添加Content-Type: application/json请求头,你可以手动指定避免框架配置覆盖导致的丢失,客户端代码补充如下:
request.AddHeader("Content-Type", "application/json");
- JSON结构与实体定义不匹配
检查序列化后的JSON字段名、数据类型是否和服务端实体的定义完全一致:- 有无大小写不匹配的字段,比如服务端是
OrderId客户端传的是orderId(可通过配置JSON序列化器忽略大小写解决) - 有无必填字段未赋值、数据类型不匹配的情况,类型转换失败会导致整个模型绑定结果为null
- 有无大小写不匹配的字段,比如服务端是
- 其他可排查的方向
- 用抓包工具(Fiddler、Charles等)抓取实际发出的请求,确认请求体格式合法无语法错误
- 检查是否有全局过滤器、自定义模型绑定器在绑定流程中修改了入参
- 临时移除
[FromBody]特性测试绑定是否正常,排查特性配置冲突
内容的提问来源于stack exchange,提问作者Adrian
相关产品推荐
相关产品推荐

