将XML发布到.Net Core Web API

问题描述

我在名为.Net Core Web API的{​​{1}}控制器上执行此操作:

HomeController

和模型[HttpPost] public IActionResult TestMethod([FromForm] DocumentDto xml) { int abc = 0; return Ok(); }

DocumentDto

我还在[XmlRoot(ElementName = "document",Namespace = "")] public class DocumentDto { [XmlElement(DataType = "string",ElementName = "id")] public string Id { get; set; } [XmlElement(DataType = "string",ElementName = "content")] public string Content { get; set; } [XmlElement(DataType = "string",ElementName = "author")] public string Author { get; set; } } 添加一个断点,并使用邮递员执行如下所示的操作

Request Headers

Request Body

用于请求的int abc = 0;是以下

xml

但是,在调试期间,<document> <id>12345</id> <content>This is a Test</content> <author>vchan</author> </document> 变量具有xml属性,如下所示

Debugging

此外,在 Startup.cs 文件中,我包括null,如下所示:

AddXmlSerializerFormatters()

为什么services .AddMvc() .AddXmlSerializerFormatters() .SetCompatibilityVersion(CompatibilityVersion.Version_2_1); 没有被解析?

解决方法

根据您的请求,原始XML应该解析为[FromBody],而不是[FromForm]