RoleManager.FindByNameAsync抛出NullReferenceException

时间:2018-01-23 12:17:13

标签: c# asp.net-core .net-core asp.net-core-identity

在我的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时会出现同样的异常。

我错过了什么?

0 个答案:

没有答案