XmlSerializerInputFormatter已过时 - ASP.NET Core 2.1

问题描述 投票:3回答:2

我使用以下内容接受我的Core API App中的序列化XML。

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()'已废弃:'此构造函数已过时,将在以后的版本中删除。

处理这个问题的新方法是什么?

c# asp.net-core xml-serialization asp.net-core-2.1
2个回答
10
投票

通过source code查看,存在一个未被标记为Obsolete的构造函数:

public XmlSerializerInputFormatter(MvcOptions options)

由于此构造函数采用MvcOptions的实例,因此您应该能够通过现有的options参数,如下所示:

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

0
投票

使用.NET Core 2.2或更高版本时,应将XmlSerializerInputFormatter标记为已弃用。

而不是像以前那样显式定义XML序列化程序,在.NET Core 2.2中我们可以通过调用AddXmlSerializerFormatters()方法添加它们,这将立即完成工作。阅读here为何被弃用

这是你如何做到的。

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);
}
© www.soinside.com 2019 - 2024. All rights reserved.