首页 > 解决方案 > 发送到 Web API 时,XML 正文为空/默认

问题描述

在过去的两天里,我一直在用头撞墙。对于我们的客户端,我们需要在我们的 API(.NET Core 3.1 或 .NET 5)中创建一个接受 XML (SOAP) 消息的接口。我正处于消息终于进来的地步,但它们总是不完整/空/默认,正如您在图片中看到的那样。

客户端发送的内容(示例 1):

在此处输入图像描述

我们的 API 接收到的内容:

在此处输入图像描述

如果我们收到包含多个列表的 XML,则列表为空(示例 2): 在此处输入图像描述

在此处输入图像描述

这里发生了什么?我错过了什么吗?

编辑:

如果我按字母顺序排列 XML,它可以工作:

在此处输入图像描述 在此处输入图像描述

是的,在我的 Startup 中,我使用了 XmlSerializers: 在此处输入图像描述

如果我使用 .AddXmlSerializerFormatters() 我什至无法发送 XML。

标签: asp.net-coreasp.net-core-3.1.net-5

解决方案


我测试了你的代码,你可以检查我的步骤。

测试XML:

public class TestXML
{     
    public int  ID { get; set; }
    public string Name { get; set; }
    public List<TestXML_UoM_Item> TestXML_UoM_List { get; set; }
}

public class TestXML_UoM_Item
{
    public string Name { get; set; }
}

XML:

<TestXML> 
 <TestXML_UoM_List>
    <TestXML_UoM_Item>
      <Name>aa</Name>
    </TestXML_UoM_Item>
    <TestXML_UoM_Item>
      <Name>bb</Name>
    </TestXML_UoM_Item>
 </TestXML_UoM_List>
 <ID>3</ID>
 <Name>Gert</Name>
</TestXML>

StratUp:

services.AddControllersWithViews().AddXmlSerializerFormatters().AddXmlDataContractSerializerFormatters();

行动:

[HttpPost]
    public void PostMds([FromBody]TestXML request)
    {
        //do your logic..
    }

测试结果: 在此处输入图像描述

在此处输入图像描述


推荐阅读