【发布时间】:2020-12-04 03:32:46
【问题描述】:
我在名为 HomeController 的 .Net Core Web API 控制器上执行此操作:
[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; }
}
我还在int abc = 0; 上添加了一个断点,并使用 Postman 执行如下所示的操作
用于请求的xml如下
<document>
<id>12345</id>
<content>This is a Test</content>
<author>vchan</author>
</document>
但是,在调试过程中,xml 变量具有null 属性,如下所示
另外,在 Startup.cs 文件中,我包含了AddXmlSerializerFormatters(),它如下:
services
.AddMvc()
.AddXmlSerializerFormatters()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
为什么xml 没有被解析?
【问题讨论】:
-
检查 xmlbounty.Models.DocumentDto 这是您从测试方法中输入的内容,看看您是否输入了 xml。
-
我不明白你说的“看看你是否输入了xml”是什么意思
-
你在哪里阅读 xml?问题不在于解析。您正在解析一个空的 xml 文件。
-
@jdweng 我没有阅读它,因为我没有发送
xml文件,而是请求正文中的一个字符串,应解码为xml。
标签: c# xml .net-core http-post postman