ASP.NET Core Identity 2 usermanager CreateAsync 似乎永远不会完成

ASP.NET Core Identity 2 usermanager CreateAsync never seems to finish

我正在为我的 ASP.NET Core 2 项目使用 Identity。虽然我对它有点满意,因为我发现了更多关于它的信息,但我 运行 遇到了一个问题,我似乎无法弄清楚这里出了什么问题。代码如下所示:

public class UserNewViewModel
{
    public UserNewViewModel()
    {

    }
    public UserNewViewModel(Domain.User user)
    {
        NormalizedEmail = user.NormalizedEmail;
        UserName = user.UserName;
        Password = string.Empty;
        Email = user.Email;
        FirstName = user.FirstName;
        LastName = user.LastName;
    }
    public string NormalizedEmail { get; set; }
    public string UserName { get; set; }
    /*[Required]
    [MinLength(8)]*/
    public string Password { get; set; }
    [Required]
    [EmailAddress]
    public string Email { get; set; }
    [Required]
    public string FirstName { get; set; }
    [Required]
    public string LastName { get; set; }
    public string Disabled { get; set; }
}

被送入:

[HttpPost]
    //[AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> RegisterUser(ViewModels.UserNewViewModel model)
    {
        if (ModelState.IsValid)
        {
            if(string.IsNullOrEmpty(model.UserName))
            {
                model.UserName = model.Email;
            }
            var existingUser = _BygBookDataContext.Users.FirstOrDefault(u => u.NormalizedEmail.Equals(model.NormalizedEmail));
            if(existingUser == null)
            {
                existingUser = new Domain.User(){
                        UserName = model.UserName,
                        Email = model.Email                     
                    };

                var result = await _userManager.CreateAsync(existingUser, model.Password);
if(result.Success)
{

}

            }
            else
            {
                existingUser.UserName = model.UserName;
                existingUser.FirstName = model.FirstName;
                existingUser.LastName = model.LastName;
                existingUser.Email = model.Email;

                await _userManager.UpdateAsync(existingUser);

                _BygBookDataContext.SaveChanges();

                if(!string.IsNullOrEmpty(model.Password))
                {
                    var pwToken = await _userManager.GeneratePasswordResetTokenAsync(existingUser);

                    await _userManager.ResetPasswordAsync(existingUser, pwToken, model.Password);

                    _BygBookDataContext.SaveChanges();
                }
            }


            return PartialView("UserNewPartial", existingUser);
        }

        // If we got this far, something failed, redisplay form
        return PartialView(model);
    }

就我而言,罪魁祸首是这一行:

await _userManager.CreateAsync(existingUser, model.Password);

我不知道哪里出了问题。我尝试在我的代码的其他地方做类似的事情:

await userMan.CreateAsync(new Domain.User{
                            UserName = "teknik@bygbook.dk",
                            Email = "teknik@bygbook.dk",
                            FirstName ="Teknik",
                            LastName = string.Empty,
                            EmailConfirmed = true
                        },
                        adminPassword);

所以我正在考虑问题是否可能是 existingUser 是通过从数据库加载它来初始化的,但这似乎不太可能,因为 EF 很难跟踪空值。

谁能告诉我这里出了什么问题?

编辑:即使将它放入变量并在 if(result.success) 处设置断点,它也永远不会在那里中断,它似乎只是在等待 createAsync

好吧,像个白痴一样,我没有检查 model.Password 是否真的有值。它没有。我仍然想知道为什么 userManager.CreateAsync(user, null) 没有抛出异常或给出任何错误或任何东西,但你去吧。

缺陷是我的输入,基本上是 <input type="password" name="Email" /> 所以当我将属性值设置为 'password' 时,它就像一个魅力。抱歉占用您的时间。