.NET Core中Hot Chocolate枚举序列化问题排查
解决Hot Chocolate中EmployeeType枚举序列化错误(EXEC_INVALID_LEAF_VALUE)
以下是针对该错误的排查和解决方向:
检查枚举与请求值的大小写匹配
Hot Chocolate枚举默认区分大小写,比如代码中定义EmployeeType.FullTime,但请求里传fulltime或Fulltime就会触发序列化失败。确保请求中的枚举值和C#枚举成员名称完全一致(包括大小写)。确认枚举已正确注册到Schema
如果手动构建Schema,需确保枚举类型被添加:
builder.AddType<EmployeeType>();
若用自动发现机制,检查枚举类是否在扫描的程序集中,可显式添加[EnumType]特性避免扫描遗漏(尽管默认支持,显式标记更稳妥)。
- 排查数据源的枚举映射
如果枚举值来自数据库,确认存储的数值/字符串能正确映射到C#枚举成员。比如数据库存"Contract"但枚举定义是Contractor,可通过特性指定映射:
public enum EmployeeType { [EnumValue("FullTime")] FullTimeEmployee, [EnumValue("Contract")] Contractor }
验证请求值的类型
确保请求传递的是枚举的名称字符串,而非整数。在Banana Cake Pop中,应写employeeType: FullTime而非employeeType: 1(除非你配置了支持整数序列化)。检查自定义序列化冲突
若项目中为枚举添加了自定义序列化/反序列化逻辑(比如实现IEnumSerializer或第三方库转换器),可能和Hot Chocolate默认处理冲突,临时禁用自定义逻辑测试是否恢复正常。
内容的提问来源于stack exchange,提问作者luqman ahmad
相关产品推荐
相关产品推荐

