Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net core 5未绑定XML模型_Xml_Asp.net Core_Asp.net Core Webapi - Fatal编程技术网

.net core 5未绑定XML模型

.net core 5未绑定XML模型,xml,asp.net-core,asp.net-core-webapi,Xml,Asp.net Core,Asp.net Core Webapi,我正在NetCore5中构建一个API,它必须接受XML和JSON作为输入和输出。 我的创业公司看起来像: services.AddControllers(options => options.RespectBrowserAcceptHeader = true) .AddXmlDataContractSerializerFormatters() .AddXmlSerializerFormatters() .AddJsonOptions(opt =>

我正在NetCore5中构建一个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
    }
}
[Route(“Auth”)]
[ApiController]
[使用(“application/xml”,新字符串[]{“application/json”})]
公共类AuthController:Controller
{
公共AuthController(){…}
[HttpPost(“登录”)]
[产品响应类型(StatusCodes.Status200OK)]
[产品响应类型(StatusCodes.Status401Unauthorized)]
公共异步任务登录([FromBody]登录模型)
{
//传递xml时,模型参数始终为null
}
}
要测试的XML:

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

管理
管理员123
我正在将
内容类型作为application/xml
传递,并将
接受为application/xml
传递

你们有谁看到问题吗?从昨天起我就在设法把它修好。
我总是收到一个400响应,其中包含消息
反序列化输入数据时出错。

感谢您的解决方案。如果我已经使用扩展方法添加了输入/输出格式化程序,我仍然不知道为什么需要将它们添加到AddController。这是另一天的问题。挑剔的是,我不认为这是一个完整的答案,因为它没有解释为什么它是正确的。添加一个解释的答案,我会接受你的。
services.AddControllers(options => 
        { 
            options.RespectBrowserAcceptHeader = true;
            options.InputFormatters.Add(new XmlSerializerInputFormatter(options));
            options.OutputFormatters.Add(new XmlSerializerOutputFormatter());
        })