c# – 无法在ASP.NET Core 2中序列化为XML
发布时间:2020-12-15 23:41:38 所属栏目:百科 来源:网络整理
导读:目前我对基本的ASP.NET Core 2 API项目和内容协商以及返回 JSON以外的其他内容感到非常困惑. 我之前在1.1项目中有过这个工作但不是在2.我基本上想要根据请求类型返回JSON或XML. 作为该要求的一部分,我设置了XML格式化程序,如下所示: public void ConfigureS
目前我对基本的ASP.NET Core 2 API项目和内容协商以及返回
JSON以外的其他内容感到非常困惑.
我之前在1.1项目中有过这个工作但不是在2.我基本上想要根据请求类型返回JSON或XML. 作为该要求的一部分,我设置了XML格式化程序,如下所示: public void ConfigureServices(IServiceCollection services) { services.AddMvc(options => { options.ReturnHttpNotAcceptable = true; options.OutputFormatters.Add(new XmlSerializerOutputFormatter()); }); } 我也可以使用AddXmlSerializerFormatters()但相同的区别(和尝试).这是我在无数个例子中看到的并且之前已经完成的方式. 我有一个控制器和单个动作,基本上看起来像: [Route("api/[controller]")] public class DefaultController : Controller { [HttpGet] [Route("")] public IActionResult Index() { return Ok(new { success = true }); } } 现在,当我跑步时,我在Postman中得到了这个: {"success": true} 所以它对JSON起作用(或者至少是默认值). 然后,如果我请求使用标头Accept:application / xml,我现在得到的HTTP错误为406. 如果我取消选项.ReturnHttpNotAcceptable = true;,它将返回JSON,无论如何. 我错过了什么?我坐在这上面摸不着头脑.据我所知,我已经注册了一个可接受的内容格式化程序. 解决方法
您看到的问题是匿名类型无法序列化为XML,因此格式化程序失败并退回到JSON格式化程序.
解决方案:在需要返回XML时使用类. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |