.net core 5没有绑定XML模型



我正在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());
});

我的课是这样的:

[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());
})

最新更新