我正在使用WebAPI2开发API。其作用之一是生成状态所需的报告,该报告需要采用XML格式。
我正在使用一组XSD和自动生成的类。我有一个Enum属性......
[System.Xml.Serialization.XmlTextAttribute()]
public CrewMemberRoles Value
当我使这个枚举可以为空时......
[System.Xml.Serialization.XmlTextAttribute()]
public CrewMemberRoles? Value
它强制WebAPI2返回JSON而不是XML;即使我有......
Content-Type: application/xml
Accept: application/xml
...在我的HTTP标题中。
我试过......
Configuration.Formatters.Remove(Configuration.Formatters.JsonFormatter);
...在控制器返回之前,但WebAPI然后返回一个完全空的响应。
在我将enum更改为nullable之前,WebAPI将枚举作为序列中的第一个枚举返回,或者返回上一次调用中此特定字段的前一个值。
任何建议都表示赞赏。
答案 0 :(得分:0)
首先,只要序列化出现问题,序列化就会默认返回默认的序列化程序。由于我不明白的原因,进一步解释here,序列化可空的问题。
我通过创建一个名为XXXSpecified ...
的bool解决了我的问题isouter=True
每当我的Value属性中有空值时,将此值设置为false。
This Stack Overflow question帮助我得出了这个结论。