Проблема создания администратора - PullRequest
0 голосов
/ 30 апреля 2018

У меня проблемы с созданием пользователя с правами администратора в моем контроллере. В чем здесь проблема?

Вот мой код:

public class ProductsController : Controller
{
    private SwagExchangeDb db = new SwagExchangeDb();

    protected override void Initialize(RequestContext requestContext)
    {
        var ac  = new ApplicationDbContext();
        var userManager = new ApplicationUserManager(new UserStore<ApplicationUser>(ac));
        var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(ac));
        var user = new ApplicationUser { UserName = "hello@gmail.com", Email = "hello@gmail.com"};
        userManager.Create(user, "Hello1234!");
        roleManager.Create(new IdentityRole("admin"));
        userManager.AddToRole(user.Id, "admin");

    }

Получение ошибки:

System.InvalidOperationException: 'UserId not found.'

1 Ответ

0 голосов
/ 30 апреля 2018

Вы пытаетесь найти пользователя по идентификатору, которого у вас нет. Вам нужно запросить пользователя после его создания. Кроме того, вы должны избавиться от контекста после его использования:

protected override void Initialize(RequestContext requestContext)
{
    using (var ac  = new ApplicationDbContext())
    {
        var userManager = new ApplicationUserManager(new UserStore<ApplicationUser>(ac));
        var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(ac));
        var user = new ApplicationUser { UserName = "hello@gmail.com", Email = "hello@gmail.com"};
        userManager.Create(user, "Hello1234!");
        roleManager.Create(new IdentityRole("admin"));

        user = userManager.FindByNameAsync(user.UserName).Result;

        userManager.AddToRole(user.Id, "admin");
    }
}
...