Служба для типа 'Microsoft.AspNetCore.Identity.RoleManager1 [Microsoft.AspNetCore.Identity.IdentityRole1 [System.Int32]]' не зарегистрирована.
При регистрации IdentityRole
для удостоверения AspNetCore тип RoleManager <> будет зарегистрирован в ServiceCollection как RoleManager<IdentityRole>
.
Когда вы захотите разрешить RoleManager<>
, укажите модель роли идентификации, зарегистрированную при запуске.в качестве параметра типа. Что будет RoleManager<IdentityRole>
в вашем конкретном случае.
При вызове GetRequiredService<RoleManager<IdentityRole>>()
для получающегося поставщика услуг, GetRequiredService<RoleManager<IdentityRole>>()
сгенерирует указанное выше исключение.
Внесите следующие изменения:
В CreateUserRoles
var roleManager = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();
Зарегистрируйте службы ролей в контейнере DI (выберите один из двух методов)
1.Используйте AddIdentity ()
services.AddIdentity<User, IdentityRole()
.AddDefaultUI()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
2.Используйте AddDefaultIdentity, включите роли, используя метод [AddRoles][1]
services.AddDefaultIdentity<User>()
.AddRoles<IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>();
Ссылка: AddDefaultIdentity и AddIdentity