ASP.NET Core WebAPI XML方法参数反序列化

问题描述 投票:0回答:1

我正在尝试在.NET Core 3.1上创建WebAPI控制器,同时支持JSON和XML作为请求/响应内容类型。

[Controller在接收带有“ application / json”的JSON时工作正常,但是当接收带有“ application / xml”的XML时,方法参数是使用默认值创建的,而不是在请求正文中发布的值。

示例项目-https://github.com/rincew1nd/ASPNetCore_XMLMethods

启动中的其他XML序列化程序:

services.AddControllers().AddXmlSerializerFormatters();

带有方法和测试模型的控制器:

    [ApiController]
    [Route("[controller]")]
    public class TestController : ControllerBase
    {
        [HttpPost, Route("v1")]
        [Consumes("application/json", "application/xml")]
        [Produces("application/json", "application/xml")]
        public TestRequest Test([FromBody] TestRequest data)
        {
            return data;
        }
    }

    [DataContract]
    public class TestRequest
    {
        [DataMember]
        public Guid TestGuid { get; set; }
        [DataMember]
        public string TestString { get; set; }
    }

P.S。项目包含用于API测试目的的Swagger。

asp.net-core asp.net-web-api xml-serialization asp.net-core-3.1
1个回答
0
投票

不要对[[application / xml使用FromBody属性。

[当参数具有[FromBody]时,Web API使用Content-Type标头选择格式器。在此示例中,内容类型为“ application / json”,请求主体为原始JSON字符串(不是JSON对象)。

Using [FromBody]

© www.soinside.com 2019 - 2024. All rights reserved.