模型绑定在ASPNET Core Web API中不起作用

时间:2019-07-23 15:16:58

标签: c# asp.net-core asp.net-web-api

我正在研究ASP.NET Core 2.1 Web API项目。我正在尝试阅读这篇文章:https://www.c-sharpcorner.com/article/jwt-json-web-token-authentication-in-asp-net-core/,但我被困在Action上。我的模型类不会绑定到输入。

[AllowAnonymous]
[HttpPost]
public IActionResult Login([FromBody] LoginVM loginVM)
{
    IActionResult response = Unauthorized(); // cant reach this point, my breakpoint is here
    var user = AuthenticateUser(new UserModel { });

    if (user != null)
    {
        var tokenString = GenerateJSONWebToken(user);
        response = Ok(new { token = tokenString });
    }

    return response;
}

public class LoginVM
{
    public string Username { get; set; }
    public string Password { get; set; }
}

enter image description here

2 个答案:

答案 0 :(得分:1)

您以x-www-form-urlencoded的身份发布,但是您将[FromBody]属性应用于了操作参数。这两件事根本是不兼容的。要接受x-www-form-urlencoded(或multipart/form-data),必须将[FromForm]属性应用于参数。如果您像现在一样拥有[FromBody],则只能接受application/jsonapplication/xml之类的东西(如果还启用了XML序列化器)。

如果问题是您希望同时接受application/json x-www-form-urlencoded请求正文,则不可能。尽管您可以将操作的实际内容分解为控制器上两个操作都可以利用的私有方法,但您对于每种请求正文编码都需要一个单独的操作。

答案 1 :(得分:0)

在正文中选择“原始”,在邮递员中选择“内容类型”为“ application / json”,然后尝试。