C# 如何从Postman将XML传递到ASP.Net核心中的Web API

C# 如何从Postman将XML传递到ASP.Net核心中的Web API,c#,xml,postman,asp.net-core-webapi,asp.net-core-2.1,C#,Xml,Postman,Asp.net Core Webapi,Asp.net Core 2.1,我有ASP.Net Core 2.1应用程序&我的API控制器如下所示 [HttpPost] public async Task<IActionResult> Post([FromBody]XElement recurlyXml) { var node = _xmlUtil.GetFirstNode(recurlyXml); //do something return Ok(); } [HttpPost] 公

我有
ASP.Net Core 2.1
应用程序&我的API控制器如下所示

 [HttpPost]
    public async Task<IActionResult> Post([FromBody]XElement recurlyXml)
    {
        var node = _xmlUtil.GetFirstNode(recurlyXml);
        //do something
        return Ok();
    }
[HttpPost]
公共异步任务发布([FromBody]XElement recurlyXml)
{
var node=_xmlUtil.GetFirstNode(recurlyXml);
//做点什么
返回Ok();
}
从postman,我用下面的负载调用这个API

<updated_subscription_notification>
 <subscription>
    <plan>
        <plan_code>1dpt</plan_code>
        <name>Subscription One</name>
    </plan>
    <uuid>292332928954ca62fa48048be5ac98ec</uuid>
</subscription>
</updated_subscription_notification>

1dpt
订阅一
292332928954ca62fa48048be5ac98ec

但是点击Send(点击),它抛出了400个错误的请求。我也尝试在顶部添加下面的一行

<?xml version="1.0" encoding="UTF-8"?>

但仍然是400

如何将XML传递给API控制器?


谢谢

ASP.NET核心默认情况下不支持XML序列化/反序列化。您必须明确启用以下功能:

services.AddMvc()
    .AddXmlSerializerFormatters();

@不过,梅森在评论中的观点仍然相关。请求主体的类型实际上是并且应该是无关紧要的。您不应该直接绑定到诸如
XElement
JObject
等对象。相反,您应该创建一个表示XML文档/JSON对象结构的类并绑定到该类。您在action方法中实际绑定到的内容与第三方客户端发送的内容无关。

如果请求是XML、JSON或其他内容,您将独立地以strem形式接收请求。接收到的数据由您在桥的另一端解码,并转换为您想要的任何对象。
他们是如何发送的并不重要,但你如何处理它。

对于Web API,你不应该在动作方法中处理XML。您的参数应该是一个强类型对象(只是一个普通的.NET类),它表示要发布到API的数据。然后,当您发布XML或JSON时,框架将使用模型绑定器将其转换为对象的类型,并将其作为参数传递给您的操作方法。@mason同意,但我有一个场景,该负载将来自第三方systemSo?它是否来自第三方系统并不重要。这并不能改变我刚才说的话。是什么阻止您创建表示要发布到Web API的数据的类(或类集)?