C# 模型绑定在aspnet核心web api中不起作用

C# 模型绑定在aspnet核心web api中不起作用,c#,asp.net-core,asp.net-web-api,C#,Asp.net Core,Asp.net Web Api,我正在从事ASP.NETCore2.1WebAPI项目。我试着跟随这篇文章:但我被困在行动中。我的模型类不会绑定到输入 [AllowAnonymous] [HttpPost] public IActionResult Login([FromBody] LoginVM loginVM) { IActionResult response = Unauthorized(); // cant reach this point, my breakpoint is here var user

我正在从事ASP.NETCore2.1WebAPI项目。我试着跟随这篇文章:但我被困在行动中。我的模型类不会绑定到输入

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

在Body中选择“raw”,在postman中选择“Content Type”作为“application/json”,然后重试。

您发布的是
x-www-form-urlencoded
,但是您将
[FromBody]
属性应用于操作参数。这两件事根本不相容。要接受
x-www-form-urlencoded
(或
multipart/form data
),必须将
[FromForm]
属性应用于参数。如果您现在使用的是
[FromBody]
,那么您只能接受类似
application/json
application/xml
(如果您还启用了xml序列化程序)


如果问题是您希望能够同时接受
application/json
x-www-form-urlencoded
请求主体,那么这是不可能的。对于每个请求体编码,您需要一个单独的操作,尽管您可以将操作的实际内容分解到控制器上的一个私有方法中,这两个操作都可以使用。

那么
//一些代码中有什么内容呢?你确定不是给了你这个错误吗?@DavidG我无法到达方法第一行的断点。你也可以添加你的主类声明吗?我假设您已经复制了
[路由(“api/[控制器]”)
[ApiController]
too@Sasha是的,我这样做了,但是我通过在类的构造函数中放置断点进行了检查,该点是可到达的,因此我认为在这里路由是可以的。使用
[FromForm]
。欢迎来到StackOverflow。见问题所附的评论。试着更清楚地解释为什么这是问题的答案。