ASP.NET Core Identity: нет службы для менеджера ролей
У меня есть приложение ASP.NET Core, которое использует Identity. Это работает, но когда я пытаюсь добавить пользовательские роли в базу данных, у меня возникают проблемы.
В запускеConfigureServices
Я добавил Identity и диспетчер ролей как сервис с областью видимости, подобный этому:
services.AddIdentity<Entities.DB.User, IdentityRole<int>>()
.AddEntityFrameworkStores<MyDBContext, int>();
services.AddScoped<RoleManager<IdentityRole>>();
и в автозагрузкеConfigure
Я внедряю RoleManager и передаю его в свой пользовательский классRolesData
:
public void Configure(
IApplicationBuilder app,
IHostingEnvironment env,
ILoggerFactory loggerFactory,
RoleManager<IdentityRole> roleManager
)
{
app.UseIdentity();
RolesData.SeedRoles(roleManager).Wait();
app.UseMvc();
ЭтоRolesData
учебный класс:
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");
}
}
}
}
}
Приложение собирается без ошибок, но при попытке доступа к нему я получаю следующую ошибку:
Не удалось разрешить службу для типа «Microsoft.AspNetCore.Identity.IRoleStore`1 [Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityRole]» при попытке активировать «Microsoft.AspNetCore.Identity.RoleManager».
Что я делаю неправильно? Моя интуиция говорит, что что-то не так с тем, как я добавляю RoleManager в качестве сервиса.
PS: я использовал «Нет аутентификации» при создании проекта, чтобы узнать идентичность с нуля.