2017-01-18 7 views
1

私はそれを取得していないようです。だから私はそれようのUserManagerがNULLである Webテンプレートで起動/手動でASP.NET IDユーザーを作成する方法

Startup.cs

から初期化を呼び出す

私はVS2015のWebコアテンプレートから一部のユーザーを作成したい(コアコンソールアプリケーションから、理想的にそれはより多くの設定が必要のようです)動作しません。私は何が欠けていますか?

DbInitializer.Initialize(context);

public static class DbInitializer 
{ 
    public static UserManager<ApplicationUser> UserManager { get; private set; } 


    public static async void Initialize(ApplicationDbContext context) 
    { 
     var user = new ApplicationUser { UserName = "[email protected]" }; 
     IdentityResult result = await UserManager.CreateAsync(user, "password"); 


     //var ttime = DateTime.Now; 
     //for (int j = 0; j < 100; j++) 
     //{ 
     // var start = DateTime.Now; 

     // for (int i = 0; i < 100; i++) 
     // { 
     //  var email = "user" + ((j * 100) + i) + "@constoso.com"; 
     //  var user = new ApplicationUser { UserName = "Bob", Email = email }; 
     //  var result = await UserManager.CreateAsync(user, "ccc"); 
     // } 
     //} 
    } 
} 
+1

あなたはどこでもあなたのUserManagerを初期化されていません。 – Kyle

答えて

1

あなたは、スタートアップからそれを呼び出すのServiceProviderを渡すと、その1からのUserManagerを取得するために主張する場合:

DbInitializer.Initialize(app.ApplicationServices);

public static async void Initialize(IServiceProvider services) 
{ 
    using (var scope = services.GetRequiredService<IServiceScopeFactory>().CreateScope()) { 
     var manager = scope.ServiceProvider.GetRequiredService<UserManager<ApplicationUser>>(); 

     var user = new ApplicationUser { UserName = "[email protected]" }; 
     var result = await manager.CreateAsync(user, "password"); 
    } 
} 
+0

優れています。今は、これがデータetlの一部としてのコンソールアプリケーションであるか、Webサイト自体とinitの一部であると分かりますか?私はそれを作成するポイントによってaspnetのIDテーブルが存在するので、 – punkouter

+1

@ punkouterそれは一度だけの権利ですか?デモ目的では、Webアプリケーションに入れるのが理にかなっていると思います。それ以外の場合、私は単純なコンソールアプリケーションを作成し、一度実行して離れてそれを投げる;-)。 Webアプリケーションの初期化では、Webアプリケーションを起動するたびにチェックされますが、それは意味をなさないものです。 – kloarubeek

関連する問題