在我的Startup.cs
文件中,在Configure
- 方法中,我试图为某些角色定位。
我正在方法调用中注入IServiceScopeFactory
:
RoleSeeder(app.ApplicationServices.GetRequiredService<IServiceScopeFactory>());
在这个方法中我创建了一个新对象(当然还有服务范围工厂集)并在其上调用Seed
方法:
public void Seed(ApplicationDbContext context)
{
using(var scope = scopeFactory.CreateScope())
{
roleManager = scope.ServiceProvider.GetService<RoleManager<IdentityRole>>();
CreateRoleIfNotExists("Finance");
CreateRoleIfNotExists("Admin");
}
}
CreateRoleIfNotExists
方法:
private async void CreateRoleIfNotExists(string role)
{
var roles = roleManager.Roles;
if (await roleManager.FindByNameAsync(role) == null)
{
await roleManager.CreateAsync(new IdentityRole { Name = role });
}
}
FindByNameAsync
方法抛出异常,尽管FindByNameAsync
被声明为实例变量。调用RoleExistsAsync
时会出现同样的异常。
我错过了什么?