2015-03-15 3 views
0

В VS2013 Они использовали инструмент администрирования веб-сайта, который вы использовали для создания ролей и членства. Я пытаюсь добавить роль «Admin» на свой сайт и добавить к нему свое имя пользователя, но все, что я пробовал, не сработало.aspnetdb Добавление ролей и пользователей

var roleManager = новый RoleManager (новый RoleStore (контекст)); roleManager.Create (новый IdentityRole («Администратор»));

var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context)); 
var user = new ApplicationUser { UserName = "admin" }; 
userManager.Create(user, "admin321"); 
userManager.AddToRole(user.Id, "Administrator"); 

Запуск этого в моем веб-приложении MVC5. дает мне следующую ошибку;

Исключение типа «System.InvalidOperationException» произошло в mscorlib.dll, но не был обработан в пользовательском коде

Дополнительная информация: тип объекта IdentityRole не является частью модели для текущего контекста.

ошибка возникает на; roleManager.Create (новый IdentityRole («Администратор»));

+0

Похоже, что вам необходимо переопределить настройку Identity, чтобы использовать свой собственный класс IdentityRole. В любом случае они отобрали Инструмент администрирования веб-сайта, но [Thinktecture.IdentityManager] (https://github.com/IdentityManager/IdentityManager) выполняет эту роль, и я считаю, что это проект, спонсируемый .NET Foundation. Может быть стоит изучить его. Вот сообщение [blog post] (http://www.hanselman.com/blog/ThinktectureIdentityManagerAsAReplacementForTheASPNETWebSiteAdministrationTool.aspx) об этом сотрудником Microsoft. – mason

+0

Приятная утилита, но не работает с ролями, а только с пользователями. –

+0

Он работает с ролями. Имейте в виду, что сообщение в блоге было написано почти год назад. Очевидно, что программное обеспечение не остановилось на год! – mason

ответ

0

Нашел свой собственный ответ здесь; ASP.Net MVC 4.5 Owin Simple Role Management by Anders G. Nordby

И вот код ключа для создания учетной записи администратора и назначения пользователя;

using (var context = new ApplicationDbContext()) 
    { 
     var roleStore = new RoleStore<IdentityRole>(context); 
     var roleManager = new RoleManager<IdentityRole>(roleStore); 

     roleManager.Create(new IdentityRole("Admin")); 

     var userStore = new UserStore<ApplicationUser>(context); 
     var userManager = new UserManager<ApplicationUser>(userStore); 

     var user = userManager.FindByEmail("[email protected]"); 
     userManager.AddToRole(user.Id, "Admin"); 
     context.SaveChanges(); 
    } 
Смежные вопросы