Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 无法从int转换为Project.Models.ApplicationUser_Asp.net_Asp.net Identity_Asp.net Core 2.0_Asp.net Roles - Fatal编程技术网

Asp.net 无法从int转换为Project.Models.ApplicationUser

Asp.net 无法从int转换为Project.Models.ApplicationUser,asp.net,asp.net-identity,asp.net-core-2.0,asp.net-roles,Asp.net,Asp.net Identity,Asp.net Core 2.0,Asp.net Roles,下面的代码告诉我错误 _userManager.AddToRoleAsync(_userManager.FindByNameAsync(user.UserName).Id, "Employee"); 我已包含代码以供进一步参考。我试图在每次访问站点时创建一个新用户,并添加一个默认角色。用户已正确添加。我以前也曾为角色设定种子,因此角色存在 public class ItemsController : Controller { private readonly MainContex

下面的代码告诉我错误

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

        }
公共类项控制器:控制器
{
私有只读主上下文\u上下文;
私有只读其他上下文\u或上下文;
私有只读IHostingEnvironment;
私有只读用户管理器_UserManager;
}
公共项控制器(主上下文上下文、其他上下文或上下文、IHostingEnvironment AppenEnvironment、UserManager UserManager)
{
_上下文=上下文;
_orcontext=orcontext;
_appenv=appEnvironment;
_userManager=userManager;
}
//获取:项目
公共异步任务索引()
{
var uname=User.Identity.Name.Remove(0,5);
if((wait _userManager.FindByNameAsync(uname))==null)
{
ApplicationUser用户=新的ApplicationUser
{
用户名=uname
};
IdentityResult result=await_userManager.CreateAsync(用户);
_userManager.AddToRoleAsync(_userManager.FindByNameAsync(user.UserName.Id,“Employee”);
}

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

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

include.UserName对我不起作用。我最终使用了(user,“Employee”);这可能是因为我的方法相当粗糙,使用windows身份验证和使用SignInManager通过Identity登录以获取角色。谢谢@Chris的帮助