我正在为我的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);
因此,考虑问题是否可以通过从数据库加载来初始化现有用户,但这似乎不太可能,因为EF很难跟踪空值。
有谁能告诉我这里有什么问题?
编辑:即使将它放入一个变量并在if(result.success)
设置一个断点,它也永远不会在那里中断,它似乎一直在等待createAsync
答案 0 :(得分:0)
好吧,就像白痴一样,我没有检查model.Password
是否真的有价值。它没有。我仍然想知道为什么userManager.CreateAsync(user, null)
没有抛出异常或给出任何错误或任何错误,但是你去了。
缺陷是我的输入,基本上是<input type="password" name="Email" />
所以当我将属性值设置为'密码'时,它就像一个魅力。抱歉占用你的时间。