ASP.NETコア2の使用UserManager - 公開オブジェクトへのアクセス
私はいくつかのアプリケーション全体のデータを初期化しようとしています。そのために私はDbInitializer
という新しいクラスを作成し、IDbInitializer
というインターフェースを作成し、AddScoped
にStartup.ConfigureServices
という名前で登録しました。
その後Startup.Configure
から、私はDbInitializer.Initialize()
を呼び出し、そのメソッド内UserManager
にいくつかの呼び出しがあります。
if (appDbContext.Roles.All(i => i.Name != adminGroupName))
{
await roleManager.CreateAsync(new IdentityRole(adminGroupName));
};
var role = appDbContext.Roles.First(i => i.Name == adminGroupName);
if (appDbContext.Users.All(i => i.UserName != adminSettings.Username))
{
await userManager.CreateAsync(new ApplicationUser { UserName = adminSettings.Username,
Email = adminSettings.Username,
FirstName = adminSettings.FirstName,
LastName = adminSettings.LastName,
EmailConfirmed = true }, adminSettings.Password);
}
var adminUser = appDbContext.Users.First(i => i.UserName == adminSettings.Username);
if (!appDbContext.UserRoles.Any(i => i.RoleId == role.Id && i.UserId == adminUser.Id))
{
await userManager.AddToRoleAsync(adminUser, role.Name);
}
は、問題は、私は取得していますということである、ランダムに例外
はアクセスできません。配置対象物
userManager.CreateAsync
またはuserManager.AddToRoleAsync
。
DbInitializer.Initialize()asyncですか?プロトタイプを投稿する – ingvar
はい、それはDbInitializerで次のように宣言されています:public async void Initialize() – user1044169
public asyncに名前を変更しますか?Task Initialize()? – ingvar