C# 无法解析类型为';Microsoft.AspNetCore.Identity.UserManager';试图激活';管理.控制器.角色控制器';
我想创建角色并将用户分配给这些角色,我已经创建了角色,但不知道如何将用户分配给它们,我尝试在启动时将UserManager添加到服务中,但它不起作用。我有一个错误: InvalidOperationException:在尝试激活“PFE_Management.Controllers.RoleControl”时,无法解析类型为“Microsoft.AspNetCore.Identity.UserManager”“1[PFE_Management.Models.AppUser]”的服务 该控制器:C# 无法解析类型为';Microsoft.AspNetCore.Identity.UserManager';试图激活';管理.控制器.角色控制器';,c#,asp.net-core,asp.net-core-mvc,asp.net-core-identity,C#,Asp.net Core,Asp.net Core Mvc,Asp.net Core Identity,我想创建角色并将用户分配给这些角色,我已经创建了角色,但不知道如何将用户分配给它们,我尝试在启动时将UserManager添加到服务中,但它不起作用。我有一个错误: InvalidOperationException:在尝试激活“PFE_Management.Controllers.RoleControl”时,无法解析类型为“Microsoft.AspNetCore.Identity.UserManager”“1[PFE_Management.Models.AppUser]”的服务 该控制器:
namespace PFE_Management.Controllers
{
public class RoleController : Controller
{
private RoleManager<IdentityRole> roleManager;
private UserManager<AppUser> userManager;
public RoleController(RoleManager<IdentityRole> roleMgr, UserManager<AppUser> userMrg)
{
roleManager = roleMgr;
userManager = userMrg;
}
//some code here
// le code qui suive c'est ajouter ou supprimer un utilisateur pour un Role
public async Task<IActionResult> Update(string id)
{
//some code here
}
[HttpPost]
public async Task<IActionResult> Update(RoleModification model)
{
IdentityResult result;
if (ModelState.IsValid)
{
foreach (string userId in model.AddIds ?? new string[] { })
{
AppUser user = await userManager.FindByIdAsync(userId);
if (user != null)
{
result = await userManager.AddToRoleAsync(user, model.RoleName);
if (!result.Succeeded)
Errors(result);
}
}
foreach (string userId in model.DeleteIds ?? new string[] { })
{
AppUser user = await userManager.FindByIdAsync(userId);
if (user != null)
{
result = await userManager.RemoveFromRoleAsync(user, model.RoleName);
if (!result.Succeeded)
Errors(result);
}
}
}
if (ModelState.IsValid)
return RedirectToAction(nameof(Index));
else
return await Update(model.RoleId);
}
}
}
namespace PFE_Management.Controllers
{
公共类角色控制器:控制器
{
私人角色经理;
private UserManagerAddDefaultIdentity
不会将用户管理器添加到服务集合中。您需要自己添加它。例如:
services.AddDefaultIdentity<IdentityUser>(...)
.AddRoles<IdentityRole>()
.AddUserManager<IdentityUser>() // <-- add this
.AddEntityFrameworkStores<ApplicationDbContext>();
services.AddDefaultIdentity(…)
.AddRoles()
.AddUserManager()//AddDefaultIdentity
不会将用户管理器添加到服务集合中。您需要自己添加它。例如:
services.AddDefaultIdentity<IdentityUser>(...)
.AddRoles<IdentityRole>()
.AddUserManager<IdentityUser>() // <-- add this
.AddEntityFrameworkStores<ApplicationDbContext>();
services.AddDefaultIdentity(…)
.AddRoles()
.AddUserManager()//Type IdentityUser必须从UserManager派生。AddDefaultIdentity
已经注册了UserManager
,因此我认为真正的问题是调用AddDefaultIdentity
应该只使用AppUser
而不是IdentityUser
。Type IdentityUser必须从UserManager派生。AddDefaultIdentity
已经注册了UserManager
,所以我认为这里真正的问题是调用AddDefaultIdentity
应该只使用AppUser
而不是IdentityUser
。