问题创建管理员用户

时间:2018-04-30 19:31:20

标签: c# asp.net-mvc asp.net-identity

我在控制器中创建管理员用户时遇到问题。这有什么问题?

这是我的代码:

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:&#39;找不到UserId。&#39;

1 个答案:

答案 0 :(得分:1)

您正试图通过您不具备的ID找到用户。您需要在创建后查询用户。此外,您应该在完成使用后处理上下文:

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");
    }
}