C# userManagerAddToRole(用户,角色):System.InvalidOperationException:RoleDoes“随机角色Id字符串”不存在
我不熟悉实体框架和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、名称; 返回视图; } 公共行动结果指数 { 返回视图; } } 这里是视图代码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; 公共配置
所以我想在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();
}