XmlSerializerInputFormatter устарел - ASP.NET Core 2.1 - PullRequest
0 голосов
/ 12 июня 2018

Я использую следующее для принятия XML, сериализованного в моем приложении Core API.

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

После обновления до ASP.NET Core 2.1 я получаю следующее предупреждение:

«XmlSerializerInputFormatter.XmlSerializerInputFormatter ()» устарел: «Этот конструктор устарел и будет удален в будущей версии.»

Какой новый способ справится с этим?

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

В .NET Core 2.2 или более поздней версии XmlSerializerInputFormatter должен быть помечен как устаревший.

Вместо явного определения сериализаторов XML, как мы это делали ранее, в .NET Core 2.2 мы можем добавить их, просто вызвав AddXmlSerializerFormatters () метод, который сделает работу сейчас.Прочитайте здесь почему это устарело

Вот как вы можете это сделать.

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);
}
0 голосов
/ 12 июня 2018

Просматривая исходный код , существует конструктор, который не был помечен как Obsolete:

public XmlSerializerInputFormatter(MvcOptions options)

Поскольку этот конструктор принимает экземпляриз MvcOptions, вы должны иметь возможность пройти через существующий аргумент options, как показано ниже:

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