AddToRoleAsync 找不到角色
AddToRoleAsync fails to find Role
我有一个使用 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
中看到具有上述名称的角色,当我第二次 运行 应用程序时,它不会像 [=15] 一样进入 _context.Roles.Add()
部分=] returns角色。
有没有人以前见过这种行为或者知道为什么会失败?
编辑
我注意到数据库中的 NormalisedName 为 null - 这是用来匹配的吗?
所以这对我来说像是一个错误。如果您使用仅接受字符串的构造函数,它会填充名称,但不会填充规范化名称。规范化名称似乎在 AddToRoleAsync
中匹配,所以它永远不会工作。
我需要使用以下命令强制填充 NormalizedName:
_context.Roles.Add(new IdentityRole("SYSADMIN")
{
NormalizedName = "SYSADMIN"
});
现在可以使用了。
我会向团队提交错误,希望它会得到修复。
我有一个使用 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
中看到具有上述名称的角色,当我第二次 运行 应用程序时,它不会像 [=15] 一样进入 _context.Roles.Add()
部分=] returns角色。
有没有人以前见过这种行为或者知道为什么会失败?
编辑 我注意到数据库中的 NormalisedName 为 null - 这是用来匹配的吗?
所以这对我来说像是一个错误。如果您使用仅接受字符串的构造函数,它会填充名称,但不会填充规范化名称。规范化名称似乎在 AddToRoleAsync
中匹配,所以它永远不会工作。
我需要使用以下命令强制填充 NormalizedName:
_context.Roles.Add(new IdentityRole("SYSADMIN")
{
NormalizedName = "SYSADMIN"
});
现在可以使用了。 我会向团队提交错误,希望它会得到修复。