我在控制器中创建管理员用户时遇到问题。这有什么问题?
这是我的代码:
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;
答案 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");
}
}