【发布时间】:2016-07-12 08:30:27
【问题描述】:
我在控制器中有一个 XDocument,我想将其作为 xml 和 json 服务(取决于请求的 Accept 标头)。
我正在使用 dotnet 核心:
在我的 startup.cs/ConfigureServices 我有这个:
services.AddMvc().AddXmlDataContractSerializerFormatters();
我的控制器本质上是这样的:
public async Task<IActionResult> getData(int id)
{
XDocument xmlDoc = db.getData(id);
return Ok(xmlDoc);
}
当使用Accept: application/json 发出请求时,我将我的数据正确格式化为 JSON。当使用Accept: application/xml 发出请求时,我仍然收到 JSON 响应(与 application/json 相同)。
我也尝试过:
services.AddMvc().AddXmlSerializerFormatters();
但更糟糕的是,即使是普通对象也作为 JSON 提供(XmlDataContractSerializer 可以处理普通对象,但不能处理 XDocument)。
当我将[Produces("application/xml")] 添加到控制器时(使用AddXmlSerializerFormatters),在提供XDocument 时出现Http 406 错误,但在返回普通对象时确实得到XML 输出。
我是否必须将 XDocument 转换为对象才能从控制器输出 XML?有没有一种简单的方法可以将 XDocument 转换为对象?
【问题讨论】:
标签: .net xml controller asp.net-core asp.net-core-mvc