.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/xml
和Accept 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());
})
我正在 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/xml
和Accept as application/xml
。
你们有没有发现问题?从昨天开始我就想把它修好。
我总是收到消息 An error occurred while deserializing input data.
services.AddControllers(options =>
{
options.RespectBrowserAcceptHeader = true;
options.InputFormatters.Add(new XmlSerializerInputFormatter(options));
options.OutputFormatters.Add(new XmlSerializerOutputFormatter());
})