AspNetCore 2.0 Identity - Issues with injecting RoleManager

核能气质少年 提交于 2019-12-07 06:24:44

问题


I need to create CRUD operations for ROLES.

I'm getting the following error:

"Unable to resolve service for type 'Microsoft.AspNetCore.Identity.RoleManager`"

So, how can i inject roleManager?

I'm using asp net core 2.0 + identity 2.2.1

Class ApplicationUser

 public class ApplicationUser : IdentityUser
    {
        [Key]
        public override string Id { get; set; }
        public bool Type { get; set; }
    }

Now in Startup.cs

        services.AddIdentity<ApplicationUser, IdentityRole<int>>()
        .AddUserStore<UserStore<ApplicationUser, IdentityRole<int>, ApplicationDbContext, int>>()
        .AddRoleStore<RoleStore<IdentityRole<int>, ApplicationDbContext, int>>()
        .AddDefaultTokenProviders();

Controller

private readonly UserManager<ApplicationUser> _userManager;
private readonly RoleManager<IdentityUser> _roleManager;

public RolesController(UserManager<ApplicationUser> userManager, RoleManager<IdentityUser> roleManager)
{
    _userManager = userManager;
    _roleManager = roleManager; 
}


public IActionResult Index()
{
    return View(_roleManager.Roles);
}

And so, i get error: "Unable to resolve service for type 'Microsoft.AspNetCore.Identity.RoleManager`.


回答1:


You should use .AddRoleManager<> instead of AddRoleStore<>. Or both in case you want to create new roles. If you are not using custom stores try with: AddEntityFrameworkStores

services.AddIdentity<ApplicationUser, IdentityRole>()
                .AddEntityFrameworkStores<YourContext>()


来源:https://stackoverflow.com/questions/46979777/aspnetcore-2-0-identity-issues-with-injecting-rolemanager

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!