【问题标题】:POST xml to .Net Core Web API将 xml 发布到 .Net Core Web API
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 做到了。现在.net 读取并理解原始请求正文。谢谢!
猜你喜欢
  • 2018-02-28
  • 2018-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-18
  • 2017-12-18
  • 1970-01-01
相关资源
最近更新 更多