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

Dom*_*see 3 asp.net asp.net-mvc

如何从控制器操作返回 XML?即使我添加标头,Accept: application/xml它也会返回一个 JSON 对象。

MVC 5 中的 WebApi 控制器支持这一点。我需要做什么才能使其在 MVC 6 中工作?

Dom*_*see 5

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

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc()
        .AddXmlSerializerFormatters();
}
Run Code Online (Sandbox Code Playgroud)

要使用它,您必须添加"Microsoft.AspNet.Mvc.Formatters.Xml": "6.0.0-rc1-final"为依赖项(在project.json下面dependencies)。


执行相同操作的一种稍微繁琐的方法是将 Xml 格式化程序直接添加到 OutputFormatters 集合中:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc(options =>
    {
        options.OutputFormatters.Add(new XmlSerializerOutputFormatter());
    });
}
Run Code Online (Sandbox Code Playgroud)

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