У меня есть базовое c веб-приложение в ядре 3, добавлено удостоверение asp, которое поставляется с ConfirmEmailModel
.
Итак, я хотел добавить пользователя в другую таблицу, как только они подтвердите их адрес электронной почты, но я получаю, не могу вставить дубликат ключа.
Пользователь уже вставлен, означает ли это, что код дважды вызывается, когда пользователь щелкает ссылку в своем электронном письме?
public async Task<IActionResult> OnGetAsync(string userId, string code)
{
if (userId == null || code == null)
{
return RedirectToPage("/Index");
}
WebApplication4User user = await _userManager.FindByIdAsync(userId);
if (user == null)
{
return NotFound($"Unable to load user with ID '{userId}'.");
}
code = Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(code));
IdentityResult result = await _userManager.ConfirmEmailAsync(user, code);
string StatusMessage = "Error confirming your email.";
if (result.Succeeded)
{
StatusMessage = "Thank you for confirming your email.";
_context.UserDetailses.Add(new UserDetails() { Id = Guid.Parse(userId) });
_context.SaveChanges();
}
return Page();
}
исключение:
Произошла ошибка при обновлении записей. Смотрите внутреннее исключение для деталей. Нарушение ограничения PRIMARY KEY 'PK_UserDetailses'. Невозможно вставить повторяющийся ключ в объект 'dbo.UserDetailses'.