Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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
Asp.net mvc 5 如何在mvc5中使用UserManager删除用户_Asp.net Mvc 5_Asp.net Identity - Fatal编程技术网

Asp.net mvc 5 如何在mvc5中使用UserManager删除用户

Asp.net mvc 5 如何在mvc5中使用UserManager删除用户,asp.net-mvc-5,asp.net-identity,Asp.net Mvc 5,Asp.net Identity,我使用的是mvc5,以及我使用UserManager进行的有关用户帐户管理的所有操作。它可以很好地处理角色、声明等,但我没有找到如何使用UserManager删除用户。有没有办法用UserManager删除用户?我可以使用dbset创建数据库上下文,然后将其从该上下文中删除,但我不希望为一个删除方法创建dbcontext、userclass等。在1.0版的UserManager中不支持删除,但在即将发布的2.0版中支持删除,在当前的2.0夜间版本中,如果您想提前预览更改。使用更新的asp.net

我使用的是mvc5,以及我使用UserManager进行的有关用户帐户管理的所有操作。它可以很好地处理角色、声明等,但我没有找到如何使用UserManager删除用户。有没有办法用UserManager删除用户?我可以使用dbset创建数据库上下文,然后将其从该上下文中删除,但我不希望为一个删除方法创建dbcontext、userclass等。

在1.0版的UserManager中不支持删除,但在即将发布的2.0版中支持删除,在当前的2.0夜间版本中,如果您想提前预览更改。

使用更新的asp.net标识,我有以下代码:

public UserManagerController()
        : this(new UserManager<User>(new UserStore<User>(new ApplicationDbContext())))
    {
    }

    public UserManagerController(UserManager<User> userManager)
    {
        UserManager = userManager;
    }

    public UserManager<User> UserManager { get; private set; }

    public async Task<ActionResult> Delete (string id)
    {
        var userContext = new ApplicationDbContext();


        var user = UserManager.Users.SingleOrDefault(u => u.Id == id);

        var userStore = new UserStore<User>(userContext);

        await UserManager.DeleteAsync(user);

        // var userManager = new UserManager<User>(userStore);

        // await userManager.DeleteAsync(user);

        return RedirectToAction("Index");
    }
公共用户管理器控制器() :此(新的UserManager(新的UserStore(新的ApplicationDbContext())) { } 公共用户管理器控制器(用户管理器用户管理器) { UserManager=UserManager; } 公共用户管理器用户管理器{get;private set;} 公共异步任务删除(字符串id) { var userContext=new ApplicationDbContext(); var user=UserManager.Users.SingleOrDefault(u=>u.Id==Id); var userStore=新的userStore(userContext); 等待UserManager.DeleteAsync(用户); //var userManager=newusermanager(userStore); //等待userManager.DeleteAsync(用户); 返回操作(“索引”); } 现在,这个将删除用户。也不需要从UserRoles表中删除,因为UserManager.DeleteAsync(用户)负责删除

希望这能帮助一些人。我花了一些时间弄明白我为什么会出错


Trond

我对上述答案有疑问,尽管我能找出问题所在。我不断得到一个级联错误。基本上是删除用户而不删除角色。DeleteAsync没有为我这样做(我有最新的Identity Framework构建)。最后将userid和role都传递到我的代码中,从角色中删除用户,然后删除用户。看起来很好用

[HttpPost, ActionName("Delete")]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Delete(string id, string role)
    {
        // Check for for both ID and Role and exit if not found
        if (id == null || role == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }

        // Look for user in the UserStore
        var user = UserManager.Users.SingleOrDefault(u => u.Id == id);

        // If not found, exit
        if (user == null)
        {
            return HttpNotFound();
        }

        // Remove user from role first!
        var remFromRole = await UserManager.RemoveFromRoleAsync(id, role);

        // If successful
        if (remFromRole.Succeeded)
        {
            // Remove user from UserStore
            var results = await UserManager.DeleteAsync(user);

            // If successful
            if (results.Succeeded)
            {
                // Redirect to Users page
                return RedirectToAction("Index", "Users", new {area = "Dashboard"});
            }
            else
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
        }
        else
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }

    }
[HttpPost,ActionName(“删除”)]
[ValidateAntiForgeryToken]
公共异步任务删除(字符串id、字符串角色)
{
//检查ID和角色,如果找不到则退出
if(id==null | | role==null)
{
返回新的HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
//在UserStore中查找用户
var user=UserManager.Users.SingleOrDefault(u=>u.Id==Id);
//如果未找到,请退出
if(user==null)
{
返回HttpNotFound();
}
//首先从角色中删除用户!
var remFromRole=await UserManager.RemoveFromRoleAsync(id,role);
//如果成功
if(remFromRole.successed)
{
//从用户存储中删除用户
var results=await UserManager.deleteAncy(用户);
//如果成功
if(results.successed)
{
//重定向到用户页面
返回RedirectToAction(“Index”,“Users”,new{area=“Dashboard”});
}
其他的
{
返回新的HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
}
其他的
{
返回新的HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
}

当发布更新标识2.0.0时,现在可以复制“是”。我正在用它