配置API返回XML失败:修改Accept Header及代码后仍返回JSON
问题排查与解决
首先检查你的Accept请求头格式:HTTP协议中Accept头需要使用标准的MIME类型,而非简写的"XML"。正确的XML媒体类型应为application/xml或text/xml。你当前设置的"XML"不符合HTTP规范,ASP.NET Core无法识别该格式,因此会默认返回JSON。
其次,确认代码配置的细节:
AddXmlDataContractSerializerFormatters()是通过DataContractSerializer处理XML序列化,若你的模型是普通POCO类(未标记[DataContract]/[DataMember]属性),建议改用AddXmlSerializerFormatters(),后者更适配常规无标记的模型。options.ReturnHttpNotAcceptable = true的作用是当请求的Accept类型不被支持时返回406 Not Acceptable,而非降级到默认格式。但由于你当前的Accept头是无效值,框架仍会走默认的JSON输出逻辑。
修正步骤:
- 将请求的Accept头修改为
application/xml或text/xml。 - 若模型无DataContract标记,把代码中的
AddXmlDataContractSerializerFormatters()替换为AddXmlSerializerFormatters()。
调整后API即可正常返回XML格式。
内容的提问来源于stack exchange,提问作者UnskilledCoder
相关产品推荐
相关产品推荐

