_UserManager.CreateAsync()返回成功,但未将用户保存在数据库中

时间:2019-09-27 22:50:22

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

我正在.Net Core 3.0中构建一个Web应用程序,并且一切运行顺利,但是我发现了一个小问题:

我有一种方法可以在运行良好的控制器中创建用户,并保存用户并一切正常。

但是我需要在另一个可以创建用户的控件中使用另一个方法,并且该方法是从另一个有效的工作方法中复制/粘贴,并使用与IOC相同的UserManager,它会返回成功,但最终用户不在数据库中。

如果要为其他人创建用户(自动生成密码),则必须使用另一种方法。密码通过并且在createAsync()上没有给出任何错误,并且符合startup.cs文件中的设置

我已经改变了方法,试图刺激EF上下文,以检查它是否包含某些东西,但是没有。...

[HttpPut]
[Authorize(Roles = "Admin")]
[Route("CreateEmployee")]
public async Task<IActionResult> CreateEmployee([FromQuery]string email)
{

var user = new IdentityUser { UserName = email, Email = email };
var pw = UserHelper.GenerateRandomPassword(10);
var userResult = await _UserManager.CreateAsync(user, pw);
var resultRole = await _UserManager.AddToRoleAsync(user, "Employee");

var code = await _UserManager.GenerateEmailConfirmationTokenAsync(user);

var callbackUrl = Url.Page(
"/Account/ConfirmEmail",
pageHandler: null,
values: new { userId = user.Id, code = code },
protocol: Request.Scheme);

EmailSender sender = new EmailSender();
await sender.SendWelcomeEmailAsync("Email Header",
new NewUserData { ConfirmUrl = callbackUrl, Password = pw, Email = email, Username = $"" });
}

检查对象userResult: userResult .succeded = true uuserResult er.Errors.Count = 0

检查对象resultRole: resultRole.succeded = true resultRole.Errors.Count = 0

0 个答案:

没有答案