添加含DateOnly参数的接口导致NSwag客户端生成失败求助
问题原因与解决方法
问题核心原因
- NSwag v14.0.2对.NET 6新增的
DateOnly类型缺乏支持:官方宣称的"支持DateTime参数"仅针对传统的System.DateTime类型,而DateOnly是.NET 6才引入的新值类型,该版本的NSwag未实现对它的元数据解析逻辑,读取类型信息时触发空引用异常。 - ASP.NET Core默认未为
DateOnly生成标准OpenAPI元数据,进一步导致NSwag无法正确识别该参数类型,引发解析错误。
可行解决办法
- 升级NSwag版本:将NSwag升级到v14.1.x及以上的稳定版本,后续版本已修复对
DateOnly等.NET 6新增值类型的解析问题。 - 手动配置类型映射:在NSwag配置文件中,添加
DateOnly到OpenAPIstring(date)类型的映射规则,确保客户端生成时能正确识别该参数,示例配置:"typeMappings": { "DateOnly": "string(date)" } - 临时替代方案:将接口参数替换为
DateTime类型,在接口内部通过DateOnly.FromDateTime(d)转换为DateOnly使用,绕过类型解析问题。
内容的提问来源于stack exchange,提问作者baddie
相关产品推荐
相关产品推荐

