2017-01-18 12 views
1

Кажется, я не понимаю. Я просто хочу, чтобы создать несколько пользователей из шаблона ядра VS2015 Web (в идеале из консольного приложения ядра, но это, кажется, требует больше настроек)Как создать пользователей ASP.NET Identity при запуске/вручную с помощью веб-шаблона

Так я называю Initialize из Startup.cs

UserManager является NULL, так это не работает. Что мне не хватает?

DbInitializer.Initialize (контекст);

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 и получить 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 ... или на самом веб-сайте и в части init ... Я думаю, что веб-сайт сайт, так как к моменту, когда я его создаю, будут существовать таблицы идентификации aspnet. – punkouter

+1

@punkouter это одноразовая вещь? Я считаю, что смысл демонстрации в веб-приложении имеет смысл только для демонстрационных целей. В противном случае я бы создал простое консольное приложение, запустил его один раз и выбросил ;-). В инициализации веб-приложения он будет проверяться каждый раз, когда вы запускаете свое веб-приложение, и это не имеет смысла. – kloarubeek

 Смежные вопросы

  • Нет связанных вопросов^_^