我正在尝试在.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。
不要对[[application / xml使用FromBody
属性。
[当参数具有[FromBody]时,Web API使用Content-Type标头选择格式器。在此示例中,内容类型为“ application / json”,请求主体为原始JSON字符串(不是JSON对象)。