Cod*_*iot 5 c# asp.net roles asp.net-identity usermanager
我目前正在使用 RoleManager 和 CreateAsync(newRoleName) 方法将角色添加到我们的数据库 - 该方法工作正常。但是当我尝试查询该角色时,它总是返回它不存在(即使我可以在数据库中看到它)。
谁能提供一些有关我无法使用该角色的原因的见解?
var roleExists = roleManager.RoleExistsAsync(role);
if (!roleExists.Result)
{
var newRole = new IdentityRole(role)
{
Name = role,
NormalizedName = role.ToUpper(),
};
var roleCreated = roleManager.CreateAsync(newRole);
Thread.Sleep(500); // Used to get result back first.
var roleExistsYet = roleManager.RoleExistsAsync(role);
if (!roleExists.Result)
{
// ALWAYS Returns [False]
}
}
Run Code Online (Sandbox Code Playgroud)
最初的问题出现在我们用UserManager创建一个新的User的时候,下面的方法会导致错误
var roleAddResult = userManager.AddToRoleAsync(newUser, "TestRole123");
Run Code Online (Sandbox Code Playgroud)
异常错误:角色 [TESTROLE123] 不存在。
注意:我可以在表 dbo.AspNetRoles 的数据库中看到角色“TestRole123”(或任何其他角色)的条目。
任何见解或帮助表示赞赏。
环境:Visual Studio 2017、Asp.NET Core、C#
我看到的问题之一 - 您需要await在方法前面使用关键字*Async():
var roleExists = await roleManager.RoleExistsAsync(role);
Run Code Online (Sandbox Code Playgroud)
和
var roleCreated = await roleManager.CreateAsync(newRole);
Run Code Online (Sandbox Code Playgroud)
等等。这将消除您需要做的事情Thread.Sleep(500);- 问题很可能出在这一行。
如果您无法执行异步方法,请使用该方法的非异步版本:
var roleCreated = roleManager.Create(newRole);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6437 次 |
| 最近记录: |