代码之家  ›  专栏  ›  技术社区  ›  Mohamed Arham

无法从int转换为Project。型号。应用程序用户

  •  0
  • Mohamed Arham  · 技术社区  · 6 年前

    下面的代码告诉我错误。

     _userManager.AddToRoleAsync(_userManager.FindByNameAsync(user.UserName).Id, "Employee");
    

    我已包含代码以供进一步参考。每次访问站点时,我都会尝试创建一个新用户,并添加一个默认角色。用户已正确添加。此外,我之前也为角色设定了种子,因此角色是存在的。

    public class ItemsController : Controller
      {
        private readonly MainContext _context;
        private readonly OtherContext _orcontext;
        private readonly IHostingEnvironment _appenv;
        private readonly UserManager<ApplicationUser> _userManager;
      }
        public ItemsController(MainContext context, OtherContext _orcontext, IHostingEnvironment appEnvironment, UserManager<ApplicationUser> userManager)
        {
            _context = context;
            _orcontext= orcontext;
            _appenv = appEnvironment;
            _userManager = userManager;
        }
    
        // GET: Items
        public async Task<IActionResult> Index()
        {
            var uname = User.Identity.Name.Remove(0, 5);
            if ((await _userManager.FindByNameAsync(uname)) == null)
            {
                ApplicationUser user = new ApplicationUser
                {
                    UserName = uname
                };
    
                IdentityResult result = await _userManager.CreateAsync(user);
                _userManager.AddToRoleAsync(_userManager.FindByNameAsync(user.UserName).Id, "Employee");
    
            }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Chris Pratt    6 年前

    第一个参数 AddToRoleAsync 是用户 例子 ,而不是id。因此出现错误。换句话说,删除 .Id 一点

    _userManager.AddToRoleAsync(_userManager.FindByNameAsync(user.UserName), "Employee");