【问题标题】:UserManager's CreateAsync method doesn't work (Identity)UserManager 的 CreateAsync 方法不起作用(身份)
【发布时间】:2020-08-13 21:25:33
【问题描述】:

我的发布方法

        [HttpPost]
        public async Task<IActionResult> Register()
        {
            User user = new User { Email = "asfa@gmail.com", UserName = "asfa@gmail.com" };
            var result = await _userManager.CreateAsync(user, "SS22!faasd");
            if (result.Succeeded)
            {
                // install cookie
                await _signInManager.SignInAsync(user, false);
            }
            else
            {
                foreach (var error in result.Errors)
                {
                    //how can i see my errors here
                }
            }
            return Ok();
        }

我正在尝试使用 UserManager 和 CreateAsync 方法创建用户,但它不起作用。在邮递员中,我总是得到200 OK

UserManager 已连接到我的数据库,因为我可以使用 get 方法获取我的用户。

另外我没有任何cshtml文件,所以我不能在页面上输出错误。

【问题讨论】:

  • 你的CreateAsync方法在创建用户后会调用Complete()方法吗?
  • @ArsenKhachaturyan 我想不,是什么?
  • 它可能连接到您的数据上下文,您可以使用它来保存数据。
  • @ArsenKhachaturyan 已连接,因为我可以使用_userManager.Users.ToList()获取用户
  • 能否请您更新您的帖子,并使用代码说明 _userManager.CreateAsync 内部方法在做什么?

标签: c# asp.net .net asp.net-core asp.net-identity


【解决方案1】:

在邮递员中我总是得到 200 OK。

你总是得到200 OK,因为在方法结束时你返回OK()方法。

为了获得其他一些状态消息,请考虑检查用户是否已创建,然后才返回 OK() 方法,否则要么抛出异常,如下所示:

throw new ArgumentException("Wasn't able to add user")

或者返回一些HTTPError,像这样:

 return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Not able to create user");

注意:如果您尝试添加新用户时用户已经存在,您也可以抛出异常。


我正在尝试使用 UserManager 和 CreateAsync 方法创建用户,但它不起作用。

这与您的 _userManager.CreateAsync 方法逻辑有关。请重温。

【讨论】:

    【解决方案2】:

    为了找到错误,我返回OK(result),然后在邮递员中看到这个错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-01
      • 2020-11-29
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      • 2018-03-24
      • 1970-01-01
      相关资源
      最近更新 更多