3

How can I return XML from a controller action? Even when I add the header Accept: application/xml it returns a JSON object.

WebApi controllers in MVC 5 supported this. What do I have to do to make it work in MVC 6?

Domysee
  • 12,718
  • 10
  • 53
  • 84

1 Answers1

5

Microsoft removed the XML formatter, so that ASP.NET MVC 6 returns only JSON by default. If you want to add support for XML again, call AddXmlSerializerFormatters after services.AddMvc() in your Startup.ConfigureServices() method:

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

To use it, you have to add "Microsoft.AspNet.Mvc.Formatters.Xml": "6.0.0-rc1-final" as dependency (in the project.json under dependencies).


A slightly more tedious way of doing the same thing would be to add the Xml formatter directly to the OutputFormatters collection:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc(options =>
    {
        options.OutputFormatters.Add(new XmlSerializerOutputFormatter());
    });
}

XmlSerializerOutputFormatter is in the namespace Microsoft.AspNet.Mvc.Formatters.

Domysee
  • 12,718
  • 10
  • 53
  • 84