如何将 xml 输入(请求)传递给 .net core 3.1 上的 Web api

How to pass xml input (request) to Web api on .net core 3.1

我有一个 .net core 3.1 网站 api。我已经尝试了以下但它总是在它命中时变成 null

[HttpPost]     
    public IActionResult ReturnXmlDocument(HttpRequestMessage request)
    {
        var doc = new XmlDocument();
        doc.Load(request.Content.ReadAsStreamAsync().Result);        
        return Ok(doc.DocumentElement.OuterXml.ToString());
    }

它甚至在调试期间也没有命中它,它还在 fiddler 中显示 415 错误。

Asp.net 核心不再使用 HttpRequestMessage 或 HttpResponseMessage。

因此,如果您想接受 xml 格式请求,您应该执行以下步骤:

1.Install Microsoft.AspNetCore.Mvc.Formatters.Xml NuGet 包。

2.Call AddXmlSerializerFormatters 在 Startup.ConfigureServices.

public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllers()
            .AddXmlSerializerFormatters(); 
    }

3.Apply 控制器 类 的 Consumes 属性或请求正文中应该 XML 的操作方法。

 [HttpPost]
    [Consumes("application/xml")]
    public IActionResult Post(Model model)
    {
        return Ok();
    }

更详细的可以参考Model binding

的官方文档