.net core 5 未绑定 XML 模型

.net core 5 not binding XML model

我正在 net core 5 中构建一个 API,它必须接受 XML 和 JSON 作为输入和输出。 我的创业公司看起来像:

services.AddControllers(options => options.RespectBrowserAcceptHeader = true)
     .AddXmlDataContractSerializerFormatters()
     .AddXmlSerializerFormatters()
      .AddJsonOptions(opt =>
      {
          opt.JsonSerializerOptions.IgnoreNullValues = true;
          opt.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
       });

我的 class 看起来像这样:

[Serializable]
public class LoginModel
{
    public LoginModel() { }

    [Required]
    public string Username { get; set; }

    [Required]
    public string Password { get; set; }

}

我的控制器:

[Route("Auth")]
[ApiController]
[Consumes("application/xml", new string[] { "application/json" })]
public class AuthController : Controller
{
     public AuthController (){...}
     
    [HttpPost("login")]
    [ProducesResponseType(StatusCodes.Status200OK)]
    [ProducesResponseType(StatusCodes.Status401Unauthorized)]
    public async Task<ActionResult> Login([FromBody] LoginModel model)
    {
         //the model parameter is always null when passing xml
    }
}

XML 测试:

<LoginModel>
    <Username>admin</Username>
    <Password>admin123</Password>
</LoginModel>

我正在通过Content-Type as application/xmlAccept as application/xml

你们有没有发现问题?从昨天开始我就想把它修好。 我总是收到消息 An error occurred while deserializing input data.

的 400 响应
services.AddControllers(options => 
        { 
            options.RespectBrowserAcceptHeader = true;
            options.InputFormatters.Add(new XmlSerializerInputFormatter(options));
            options.OutputFormatters.Add(new XmlSerializerOutputFormatter());
        })