Asp.net core 设定数据库种子时RoleManager ArgumentNullException

Asp.net core 设定数据库种子时RoleManager ArgumentNullException,asp.net-core,asp.net-identity,entity-framework-core,Asp.net Core,Asp.net Identity,Entity Framework Core,当我运行我的应用程序时,在ensureedataasync方法的第一个if条件中,抛出一个ArgumentNullException,并显示消息“值不能为null。”。当它到达这一点时,_roleManager不为空。给定给构造函数的参数也不是null FletnixUser是从IdentityUser继承的空类,FletnixRole是从IdentityRole继承的空类 有人知道是什么导致了这个错误吗?我无法找到原因,甚至重建了数据库并将其迁移到identity框架。我试着注释掉所有的角色函

当我运行我的应用程序时,在
ensureedataasync
方法的第一个
if
条件中,抛出一个
ArgumentNullException
,并显示消息“
值不能为null。
”。当它到达这一点时,_roleManager不为空。给定给构造函数的参数也不是null

FletnixUser
是从
IdentityUser
继承的空类,
FletnixRole
是从
IdentityRole
继承的空类

有人知道是什么导致了这个错误吗?我无法找到原因,甚至重建了数据库并将其迁移到identity框架。我试着注释掉所有的角色函数和FletnixSeedData构造函数中的第三个参数,这样它只创建一个用户,这是可行的

我包含了
startup.cs
类,因为该类是调用
FletnixSeedData
类的唯一类

FletnixSeedData.cs


您是否检查了
\u roleManager
是否为空?是的,正如我在问题顶部提到的。这就是它的奇怪之处,一切似乎都很好,但它仍然会抛出一个错误。啊,对不起,错过了。角色经理是否具有所有正确的从属关系?您能进入
角色列表同步吗?
public class FletnixSeedData {
    private FletnixContext _context;
    private UserManager<FletnixUser> _userManager;
    private RoleManager<FletnixRole> _roleManager;

    public FletnixSeedData(FletnixContext context, UserManager<FletnixUser> userManager, RoleManager<FletnixRole> roleManager) {
        _context = context;
        _userManager = userManager;
        _roleManager = roleManager;
    }

    public async Task EnsureSeedDataAsync() {
        // If roles and users exist, delete
        if (!await _roleManager.RoleExistsAsync("Customer")) {
            await _roleManager.DeleteAsync(await _roleManager.FindByNameAsync("Customer"));
        }
        if (await _roleManager.FindByNameAsync("Admin") != null) {
            await _roleManager.DeleteAsync(await _roleManager.FindByNameAsync("Admin"));
        }
        if (await _roleManager.FindByNameAsync("FinancialManager") != null) {
            await _roleManager.DeleteAsync(await _roleManager.FindByNameAsync("FinancialManager"));
        }
        if (await _roleManager.FindByNameAsync("CEO") != null) {
            await _roleManager.DeleteAsync(await _roleManager.FindByNameAsync("CEO"));
        }

        if (await _userManager.FindByEmailAsync("myemail@gmail.com") != null) {
            await _userManager.DeleteAsync(await _userManager.FindByEmailAsync("myemail@gmail.com"));
        }


        // Recreate roles and users
        var customerRole = new FletnixRole {
            Name = "Customer"
        };
        var adminRole = new FletnixRole {
            Name = "Admin"
        };
        var financialManagerRole = new FletnixRole {
            Name = "FinancialManager"
        };
        var ceoRole = new FletnixRole {
            Name = "CEO"
        };
        await _roleManager.CreateAsync(customerRole);
        await _roleManager.CreateAsync(adminRole);
        await _roleManager.CreateAsync(financialManagerRole);
        await _roleManager.CreateAsync(ceoRole);

        var newUser = new FletnixUser {
            UserName = "myusername",
            Email = "myemail@gmail.com"
        };
        await _userManager.CreateAsync(newUser, "P@ssw0rd!");
        await _userManager.AddToRoleAsync(newUser, "Customer");
    }
}
    public void ConfigureServices(IServiceCollection services) {
        services.AddMvc();

        services.AddIdentity<FletnixUser, FletnixRole>(config => {
            config.User.RequireUniqueEmail = true;
            config.Password.RequiredLength = 6;
            config.Cookies.ApplicationCookie.LoginPath = "/Auth/Login";
        }).AddEntityFrameworkStores<FletnixContext>();

        services.AddEntityFramework()
            .AddSqlServer()
            .AddDbContext<FletnixContext>();

        services.AddScoped<IFletnixRepository, FletnixRepository>();
        services.AddTransient<FletnixSeedData>();
    }
    public async void Configure(IApplicationBuilder app, FletnixSeedData seeder) {
#if DEBUG
        app.UseDeveloperExceptionPage();
#endif

        app.UseStaticFiles();

        app.UseIdentity();

        app.UseMvc(config => {
            config.MapRoute(
                name: "Default",
                template: "{controller}/{action}/{id?}",
                defaults: new {
                    controller = "Auth", action = "Login"
                }
            );
        });

        await seeder.EnsureSeedDataAsync();
    }