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

.NET 6 Minimal API中ReadFromJsonAsync对不匹配模型JSON不抛异常问题

问题原因说明

官方文档描述的异常场景与测试场景不匹配

官方文档提到的抛异常触发条件是请求Content-Type不属于JSON相关的媒体类型(比如传入application/xml、text/plain等),你使用Postman提交JSON请求时默认会携带application/json的合法Content-Type头,所以不会触发该异常逻辑。

字段不匹配不触发反序列化异常是System.Text.Json的默认行为

.NET内置的System.Text.Json序列化器默认配置规则如下:

  • 忽略JSON中存在但目标模型不存在的属性,不会因此抛出异常
  • 模型属性没有匹配的JSON字段时,自动使用属性声明的默认值
    你的Message类的Receiver和Content属性都设置了默认值"",即使请求JSON没有任何匹配字段,反序列化得到的msg仍是合法实例,不会为null,因此会进入200返回分支。

可选调整方案

如果需要在字段不匹配/必填项缺失时触发错误,可按以下方式调整:

  1. 配置反序列化时检测缺失成员并抛出异常:
    在调用ReadFromJsonAsync时传入自定义的JsonSerializerOptions:
var options = new JsonSerializerOptions
{
    MissingMemberHandling = JsonMissingMemberHandling.Error
};
var msg = await http.Request.ReadFromJsonAsync<Message>(options);
  1. 如需做必填字段校验,可给属性添加[Required]注解,同时手动调用Validator.TryValidateObject执行校验逻辑(Minimal API默认不开启自动模型校验)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:06:02