我使用以下内容接受我的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()'已废弃:'此构造函数已过时,将在以后的版本中删除。
处理这个问题的新方法是什么?
通过source code查看,存在一个未被标记为Obsolete
的构造函数:
public XmlSerializerInputFormatter(MvcOptions options)
由于此构造函数采用MvcOptions
的实例,因此您应该能够通过现有的options
参数,如下所示:
services.AddMvc(options =>
{
// allow xml format for input
options.InputFormatters.Add(new XmlSerializerInputFormatter(options));
}) ...
使用.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);
}