Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# _IsInRoleAsync(user,roleName)只返回false_C#_Asp.net Core_Asp.net Core Webapi - Fatal编程技术网

C# _IsInRoleAsync(user,roleName)只返回false

C# _IsInRoleAsync(user,roleName)只返回false,c#,asp.net-core,asp.net-core-webapi,C#,Asp.net Core,Asp.net Core Webapi,我正在为用户分配角色,但当我检查 _userManager.IsInRoleAsync(user, roleName) 它只返回false,我无法删除该角色 下面是userService的代码 public async Task<ApiResult<bool>> RoleAssign(Guid id, RoleAssignRequest request) { var user = await _userManager.FindByIdAsync(id.ToStr

我正在为用户分配角色,但当我检查

_userManager.IsInRoleAsync(user, roleName)
它只返回false,我无法删除该角色

下面是userService的代码

public async Task<ApiResult<bool>> RoleAssign(Guid id, RoleAssignRequest request)
{
    var user = await _userManager.FindByIdAsync(id.ToString());
    if (user == null)
    {
        return new ApiErrorResult<bool>("Tài khoản không tồn tại");
    }
    var removedRoles = request.Roles.Where(x => x.Selected == false).Select(x => x.Name).ToList();
    foreach (var roleName in removedRoles)
    {
        if (await _userManager.IsInRoleAsync(user, roleName) == true)
        {
            await _userManager.RemoveFromRoleAsync(user, roleName);
        }
    }
    await _userManager.RemoveFromRolesAsync(user, removedRoles);

    var addedRoles = request.Roles.Where(x => x.Selected).Select(x => x.Name).ToList();
    foreach (var roleName in addedRoles)
    {
        if (await _userManager.IsInRoleAsync(user, roleName) == false)
        {
            await _userManager.AddToRoleAsync(user, roleName);
        }
    }

    return new ApiSuccessResult<bool>();
}
公共异步任务角色签名(Guid id,角色签名请求)
{
var user=await_userManager.FindByIdAsync(id.ToString());
if(user==null)
{
返回新的ApiErrorResult(“Tái khoản khôtồn tạ(i);;
}
var removedRoles=request.Roles.Where(x=>x.Selected==false);
foreach(移除角色中的变量roleName)
{
if(wait_userManager.IsInRoleAsync(user,roleName)==true)
{
wait_userManager.RemoveFromRoleAsync(用户,roleName);
}
}
wait_userManager.RemoveFromRolesAsync(用户,removedRoles);
var addedRoles=request.Roles.Where(x=>x.Selected).Select(x=>x.Name.ToList();
foreach(addedRoles中的var roleName)
{
if(wait_userManager.IsInRoleAsync(user,roleName)==false)
{
wait_userManager.AddToRoleAsync(用户,roleName);
}
}
返回新的APIssuccessResult();
}

RemoveFromRoleAsync
返回一个
IdentityResult
,其中最有可能列出您的失败

IdentityResult result = await _userManager.RemoveFromRoleAsync(user, roleName);
if (!result.Succeeded)
{
    // check what's in errors
    var errors = result.Errors;
}

我解决了这个问题,我从Dotnet core 5.0降级到Dotnet core 3.1,并将所有identity framework更改为3.1.1。我认为这是一个bug。

当我检查它时,我得到错误“UserNotInRole”,具体描述是“用户不在‘教师’角色中”。var roles=wait\u userManager.GetRolesAsync(用户);当我像这样检查变量角色仍然获取用户的列表角色时,发生了什么@埃里克