ASP.NET Core Identity: no hay servicio para el administrador de roles
Tengo una aplicación ASP.NET Core que usa Identity. Funciona, pero cuando intento agregar roles personalizados a la base de datos me encuentro con problemas.
En el inicioConfigureServices
He agregado Identity y el administrador de roles como un servicio con alcance como este:
services.AddIdentity<Entities.DB.User, IdentityRole<int>>()
.AddEntityFrameworkStores<MyDBContext, int>();
services.AddScoped<RoleManager<IdentityRole>>();
y en el inicioConfigure
Inyecto RoleManager y lo paso a mi clase personalizadaRolesData
:
public void Configure(
IApplicationBuilder app,
IHostingEnvironment env,
ILoggerFactory loggerFactory,
RoleManager<IdentityRole> roleManager
)
{
app.UseIdentity();
RolesData.SeedRoles(roleManager).Wait();
app.UseMvc();
Este es elRolesData
clase:
public static class RolesData
{
private static readonly string[] roles = new[] {
"role1",
"role2",
"role3"
};
public static async Task SeedRoles(RoleManager<IdentityRole> roleManager)
{
foreach (var role in roles)
{
if (!await roleManager.RoleExistsAsync(role))
{
var create = await roleManager.CreateAsync(new IdentityRole(role));
if (!create.Succeeded)
{
throw new Exception("Failed to create role");
}
}
}
}
}
La aplicación se construye sin errores, pero cuando intento acceder a ella aparece el siguiente error:
No se puede resolver el servicio para el tipo 'Microsoft.AspNetCore.Identity.IRoleStore`1 [Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityRole]' al intentar activar 'Microsoft.AspNetCore.Identity.RoleManager
¿Qué estoy haciendo mal? Mi instinto dice que hay algo mal en cómo agrego el RoleManager como servicio.
PD: He usado "Sin autenticación" al crear el proyecto para aprender Identidad desde cero.