Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

XmlSerializerInputFormatter is obsolete - ASP.NET Core 2.1

I am using the following to accept XML serialized in my Core API App.

services.AddMvc(options =>
{
    // allow xml format for input
    options.InputFormatters.Add(new XmlSerializerInputFormatter());
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

After updating to ASP.NET Core 2.1 I receive the following warning:

'XmlSerializerInputFormatter.XmlSerializerInputFormatter()' is obsolete: 'This constructor is obsolete and will be removed in a future version.'

What is the new way to handle this?

like image 231
aherrick Avatar asked Jun 12 '18 13:06

aherrick


2 Answers

According to the source code, there's a constructor that has not been marked as Obsolete:

public XmlSerializerInputFormatter(MvcOptions options)

This constructor takes an instance of MvcOptions, so you can pass through your existing options argument:

services.AddMvc(options =>
{
    // allow xml format for input
    options.InputFormatters.Add(new XmlSerializerInputFormatter(options));
}) ...

As of ASP.NET Core 3.0, this constructor is the only one available. Those that were marked obsolete have now been removed.

like image 120
Kirk Larkin Avatar answered Nov 07 '22 07:11

Kirk Larkin


With .NET Core 2.2 or later XmlSerializerInputFormatter should be marked as deprecated.

Instead a of explicitly defining XML serializers as we did before, in the .NET Core 2.2 we can add them simply by calling AddXmlSerializerFormatters() method which will do the job now. Read here why it has been deprecated

Here is how you can do it.

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc(config =>
    {
        config.RespectBrowserAcceptHeader = true;
        config.ReturnHttpNotAcceptable = true;

        config.OutputFormatters.Add(new CsvOutputFormatter());
    }).AddXmlSerializerFormatters().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
like image 28
Rakshith Murukannappa Avatar answered Nov 07 '22 08:11

Rakshith Murukannappa