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

rah*_*hul 2 xml fiddler asp.net-core webapi

我有一个 .net core 3.1 web api。我已经尝试了以下但它总是在它击中它时变成空

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

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

mj1*_*313 7

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

所以,如果你想接受一个xml格式的请求,你应该执行以下步骤:

1.安装Microsoft.AspNetCore.Mvc.Formatters.Xml NuGet 包。

2.在Startup.ConfigureServices中调用AddXmlSerializerFormatters

public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllers()
            .AddXmlSerializerFormatters(); 
    }
Run Code Online (Sandbox Code Playgroud)

3.Apply的消耗属性应该期望在请求主体XML控制器类或动作方法。

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

更详细的可以参考Model binding的官方文档

  • 感谢您的回答,我注意到即使没有 [Consumes("application/xml")] 属性它也可以工作。 (3认同)