Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.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# userManagerAddToRole(用户,角色):System.InvalidOperationException:RoleDoes“随机角色Id字符串”不存在_C#_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# userManagerAddToRole(用户,角色):System.InvalidOperationException:RoleDoes“随机角色Id字符串”不存在

C# userManagerAddToRole(用户,角色):System.InvalidOperationException:RoleDoes“随机角色Id字符串”不存在,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我不熟悉实体框架和ASP.NETMVC。在我的项目中,我尝试将角色分配给用户。当我尝试将角色分配给用户时,会生成此错误。尽管我试图在调试器中查看,但我得到了我所期望的角色Id和用户Id,但当这些Id传递给userManager.AddToRoleUser时,它表示角色不存在 这是我创建角色的种子方法。这些角色将在AspNetRoles表中创建 内部密封类配置:DBMigOptionsConfiguration { 私人角色管理者; 私有应用程序dbContext dbContext; 公共配置

我不熟悉实体框架和ASP.NETMVC。在我的项目中,我尝试将角色分配给用户。当我尝试将角色分配给用户时,会生成此错误。尽管我试图在调试器中查看,但我得到了我所期望的角色Id和用户Id,但当这些Id传递给userManager.AddToRoleUser时,它表示角色不存在

这是我创建角色的种子方法。这些角色将在AspNetRoles表中创建

内部密封类配置:DBMigOptionsConfiguration { 私人角色管理者; 私有应用程序dbContext dbContext; 公共配置 { AutomaticMiggerationsEnabled=假; dbContext=新的ApplicationDbContext; roleManager=新的RoleManagementdbContext; } 受保护的覆盖无效种子VacationProjectv2.Models.ApplicationDbContext上下文 { //迁移到最新版本后将调用此方法。C:\Users\brahm\source\repos\VacationProjectV2\VacationProjectV2\App\u Start\ //您可以使用DbSet.AddOrUpdate助手扩展方法 //避免创建重复的种子数据。 roleManager.CreateRoleAdmin/.ToString.ToUpper; roleManager.CreateRoleProjectManager/.ToString.ToUpper; roleManager.CreateRoleDeveloper/.ToString.ToUpper; } } 这是我的AdminController,我正在尝试分配它

公共类管理员控制器:控制器 { ApplicationDbContext db=新的ApplicationDbContext; 用户管理器用户管理器; RoleManager RoleManager; 公共管理控制器 { roleManager=新roleManager新RoleStoredb; userManager=newusermanagernewuserstoredb; } //获取:管理员 公共行动结果分配角色 { ViewBag.Users=新建SelectListdb.Users、Id、用户名; ViewBag.Roles=新建SelectListdb.Roles、Id、名称; 返回视图; } [HttpPost] public ActionResult AssignRolestring用户、字符串角色 { userManager.AddToRoleUsers,角色; ViewBag.Users=新建SelectListdb.Users、Id、用户名; ViewBag.Roles=新建SelectListdb.Roles、Id、名称; 返回视图; } 公共行动结果指数 { 返回视图; } } 这里是视图代码


所以我想在AspNetUserRoles表中看到UserId和RoleId。我不知道我在哪里犯了错误。我试图使用.Tostrong.ToUpper在seed方法中创建角色,方法是查看另一篇具有相同问题的帖子,但对我来说不起作用。请告诉我哪里出了错。

对不起,伙计们,这是我的错,我没有正确检查方法所需的参数。错误是userManager.AddToRole。需要roleName而不是roleId作为参数

 public ActionResult AssignRoles()
        {
            ViewBag.Users = new SelectList(db.Users, "Id", "UserName");
            ViewBag.Roles = new SelectList(db.Roles, "Name", "Name"); // Here I was Passing the Id insted Of Role Name.
            return View();
        }
        [HttpPost]
        public ActionResult AssignRoles(string Users,string Roles)
        {
            usersManager.AddToRole(Users, Roles);
            ViewBag.Users = new SelectList(db.Users, "Id", "UserName");
            ViewBag.Roles = new SelectList(db.Roles, "Name", "Name");
            return View();
        }

是否确实可以将简单字符串与userManager.AddToRoleUsers、Roles;一起使用?我对此不确定。我还没有学习AddToRoleAsync方法。所以我不能直接在AddToRole方法中添加字符串?你应该从你的帖子中记录什么是用户和角色。请注意,AddToRole和AddToRoleAsync是不同的。你在用什么?我在用AddToRole。非常感谢我发现了我的错误我仔细检查了方法和AddToRole require Sting of Role Name而不是Role Id的字符串。现在它工作得很好谢谢@hugo
 public ActionResult AssignRoles()
        {
            ViewBag.Users = new SelectList(db.Users, "Id", "UserName");
            ViewBag.Roles = new SelectList(db.Roles, "Name", "Name"); // Here I was Passing the Id insted Of Role Name.
            return View();
        }
        [HttpPost]
        public ActionResult AssignRoles(string Users,string Roles)
        {
            usersManager.AddToRole(Users, Roles);
            ViewBag.Users = new SelectList(db.Users, "Id", "UserName");
            ViewBag.Roles = new SelectList(db.Roles, "Name", "Name");
            return View();
        }