XmlSerializerInputFormatter устарел - ASP.NET Core 2.1

Я использую следующее, чтобы принять сериализованный 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 ()» устарел: «Этот конструктор устарел и будет удален в будущей версии».

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


person aherrick    schedule 12.06.2018    source источник


Ответы (2)


Согласно исходный код, есть конструктор, который не отмечен как Obsolete:

public XmlSerializerInputFormatter(MvcOptions options)

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

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

Начиная с ASP.NET Core 3.0, этот конструктор является единственным доступным. Те, что были отмечены как устаревшие, теперь удалены.

person Kirk Larkin    schedule 12.06.2018
comment
Без проблем. Я только что проверил исходный код 2.0, и конструктор, о котором я упоминал, является новым в ASP.NET Core 2.1. Вот проблема Github, на которую ссылается запрос на перенос этого изменения. - person Kirk Larkin; 12.06.2018

В .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);
}
person Rakshith Murukannappa    schedule 03.05.2019