如何从ASP.NET 5 MVC 6控制器操作返回XML

3

我该如何从控制器操作返回XML?即使我添加了头Accept:application/xml,它仍然返回JSON对象。

MVC 5中的WebApi控制器支持此功能。在MVC 6中要使其工作,我需要做什么?

1个回答

5

微软移除了XML格式化程序,因此ASP.NET MVC 6默认仅返回JSON。如果您想再次添加对XML的支持,请在Startup.ConfigureServices()方法中调用services.AddMvc()后调用AddXmlSerializerFormatters

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc()
        .AddXmlSerializerFormatters();
}

要使用它,您需要将"Microsoft.AspNet.Mvc.Formatters.Xml": "6.0.0-rc1-final"添加为依赖项(在dependencies下的project.json中)。
一个稍微繁琐的方法是直接将Xml格式化程序添加到OutputFormatters集合中:
public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc(options =>
    {
        options.OutputFormatters.Add(new XmlSerializerOutputFormatter());
    });
}

XmlSerializerOutputFormatter位于命名空间Microsoft.AspNet.Mvc.Formatters中。


MvcOptions来自哪个类? - smulholland2
1
@Nulref 它位于 Microsoft.AspNet.Mvc 命名空间中。 - Domysee
我已经更新了答案以反映当前的用法,包括命名空间的更改。 - Jim Buck
@Domysee,实际上我不能使用你的方法,扩展方法似乎已经不存在了。 - Jim Buck
@JimmyBoh 我今天刚测试了一下,你确定你有 RC1 吗? - Domysee
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接