Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.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# Can';t从特定角色中删除用户_C#_Asp.net_Asp.net Web Api_Asp.net Identity - Fatal编程技术网

C# Can';t从特定角色中删除用户

C# Can';t从特定角色中删除用户,c#,asp.net,asp.net-web-api,asp.net-identity,C#,Asp.net,Asp.net Web Api,Asp.net Identity,使用WebAPI2和identity 2,我试图创建一个操作,使用用户id和角色名将用户从角色中删除。我正在使用nuget identity2示例提供的ApplicationUserManager 我的行动 [HttpPost] [Route("RemoveUserFromRole")] public async Task<IHttpActionResult> RemoveUserFromRole(UserRolesViewModel model) { if (!Model

使用WebAPI2和identity 2,我试图创建一个操作,使用用户id和角色名将用户从角色中删除。我正在使用nuget identity2示例提供的ApplicationUserManager

我的行动

[HttpPost]
[Route("RemoveUserFromRole")]
public async Task<IHttpActionResult> RemoveUserFromRole(UserRolesViewModel model) 
{
    if (!ModelState.IsValid)
        return BadRequest(ModelState);

    var result = await UserManager.RemoveUserFromRolesAsync(
        model.UserId, model.RoleNames);

    if (result.Errors.Any())
        return InternalServerError(); 

    return Ok();
}
但给定以下json,用户不会从“Mod”中删除,而是从“user”中删除:

{
    "userId": "0d5f97e4-65a0-43ad-b889-0af98a7ff326",
    "roleNames": [
        "Mod"
    ]
}

调试表明,当给定角色“Mod”时,正确的用户id和角色名称会传递到userRoleStore中。

这是一个错误,应该在版本2.0.1中修复,但仍然有效

db.Database.ExecuteSqlCommand(@"delete from aspnetuserroles from
aspnetuserroles ur inner join aspnetroles r on r.id=ur.roleid inner join aspnetusers 
u on u.id=ur.userid where r.name=@role and u.username=@user",
    new SqlParameter("@role",RoleName) ,
    new SqlParameter("@user",UserName));

谢谢-你有这方面的消息来源吗?啊-我在我的主要项目中更新到了2.0.1,但在我的测试中忘记了并停留在2.0。再次感谢
{
    "userId": "0d5f97e4-65a0-43ad-b889-0af98a7ff326",
    "roleNames": [
        "User"
    ]
}
{
    "userId": "0d5f97e4-65a0-43ad-b889-0af98a7ff326",
    "roleNames": [
        "Mod"
    ]
}
db.Database.ExecuteSqlCommand(@"delete from aspnetuserroles from
aspnetuserroles ur inner join aspnetroles r on r.id=ur.roleid inner join aspnetusers 
u on u.id=ur.userid where r.name=@role and u.username=@user",
    new SqlParameter("@role",RoleName) ,
    new SqlParameter("@user",UserName));