Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AspNetCore 2.0 Identity - Issues with injecting RoleManager

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`.

like image 914
Fabio Alves Avatar asked Oct 18 '22 03:10

Fabio Alves


1 Answers

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>()
like image 83
Charly Guirao Avatar answered Oct 29 '22 20:10

Charly Guirao