У меня есть небольшое тестовое приложение, использующее Asp.net Core Identity. В автозапуске проверяю наличие определенных системных ролей:
if(await _roleManager.FindByNameAsync(“SYSADMIN”) == null)
{
_context.Roles.Add(new IdentityRole(“SYSADMIN”));
await _context.SaveChangesAsync();
}
Затем я проверяю и создаю учетную запись системного администратора, если она не существует:
var result = await _userManager.CreateAsync(adminUser, config["AdminPassword"]);
Затем я пытаюсь добавить этого пользователя в роль SYSADMIN:
if (result == IdentityResult.Success)
{
await _userManager.AddToRoleAsync(adminUser, “SYSADMIN”);
}
но получаю ошибку, что роль не существует. Однако я вижу роль с указанным выше именем в AspNetRoles
, и когда я запускаю приложение во второй раз, оно не переходит в раздел _context.Roles.Add()
, поскольку _roleManager.FindByNameAsync
возвращает роль.
Кто-нибудь видел такое поведение раньше или знает, что происходит, почему он не работает?
edit Я заметил, что NormalizedName имеет значение null, хотя в БД - это то, что он использует для сопоставления?