_UserManager.CreateAsync () возвращает sucess, но не сохраняет пользователя в базе данных. - PullRequest
0 голосов
/ 28 сентября 2019

Я создаю веб-приложение в .Net Core 3.0, и все работает гладко, но я обнаружил небольшую проблему:

У меня есть способ создать пользователя в хорошо работающем контроллере, который сохраняет пользователяи все нормально.

Но мне нужно иметь другой метод в другом контроллере, который также может создавать пользователей, и этот метод является копированием / вставкой из другого работающего метода, использующего тот же UserManager, которыйIOC ', он возвращает успех, но в конце пользователь не в базе данных.

Это должен быть другой метод, как этот, если он предназначен для создания пользователей для других людей, где пароль генерируется автоматически.Пароль проходит и не выдает никакой ошибки в 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.successded = true resultRole.Errors.Count = 0

...