.NET 9 OpenAPI端点抛出异常:‘节点必须为JsonValue类型’
.NET 9 OpenAPI 迁移中
InvalidOperationException: The node must be of type 'JsonValue' 异常处理 问题背景
从SwaggerGen迁移至.NET 9内置OpenAPI组件时,已通过移除模型验证中所有double.MaxValue的使用解决了一个兼容性问题,但访问/openapi/dev.json端点时抛出以下异常:
InvalidOperationException: The node must be of type 'JsonValue'
项目包含大量视图模型、表单模型及查询模型,但异常未提供明确的报错定位线索。
复现场景
经排查,当模型中可选的IEnumerable<string>类型数组字段添加[Length(0,10)]验证特性时,会触发该异常。移除该验证特性后,异常消失。推测其他针对数组类型的长度/范围类验证属性也可能引发同类异常。
临时解决方案
- 临时移除数组字段上的
[Length]验证特性,先保证OpenAPI文档生成正常; - 若业务需要保留数组长度验证,可改用自定义验证逻辑(如实现
IValidatableObject接口)替代[Length]特性; - 全面排查所有模型中的数组类型字段,检查是否存在其他可能触发异常的验证属性,逐一移除验证并测试文档生成情况。
内容的提问来源于stack exchange,提问作者Parsa99
相关产品推荐
相关产品推荐

