Asp.net mvc 调用SingInManager并返回成功MVC5后,没有可用的用户数据

Asp.net mvc 调用SingInManager并返回成功MVC5后,没有可用的用户数据,asp.net-mvc,asp.net-mvc-5,asp.net-identity,Asp.net Mvc,Asp.net Mvc 5,Asp.net Identity,在成功登录后尝试访问用户数据时,我收到一个NullReferenceException。这里的查询是关于用户数据在登录过程中何时实际可用以进行查询。以下是我在帐户控制器的登录方法中输入的代码: [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)

在成功登录后尝试访问用户数据时,我收到一个NullReferenceException。这里的查询是关于用户数据在登录过程中何时实际可用以进行查询。以下是我在帐户控制器的登录方法中输入的代码:

  [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
    {
        if (!ModelState.IsValid)
        {
            return View(model);
        }

        // This doesn't count login failures towards account lockout
        // To enable password failures to trigger account lockout, change to shouldLockout: true
        var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
        switch (result)
        {
            case SignInStatus.Success:
                var sh = new SoapHelper();
                var user = UserManager.FindById(User.Identity.GetUserId());
                Session["UserExists"] = true;
                Session["StartDate"] = DateTime.Now.ToString("yyyyMMdd");
                Session["EndDate"] = DateTime.Now.ToString("yyyyMMdd");
                Session["UserCompany"] = user.CompanyID;
[HttpPost]
[异名]
[ValidateAntiForgeryToken]
公共异步任务登录(LoginView模型,字符串返回URL)
{
如果(!ModelState.IsValid)
{
返回视图(模型);
}
//这不会将登录失败计入帐户锁定
//要使密码失败触发帐户锁定,请更改为shouldLockout:true
var result=wait SignInManager.PasswordSignInAsync(model.Email、model.Password、model.RememberMe、shouldllockout:false);
开关(结果)
{
案例标志状态成功:
var sh=新的SoapHelper();
var user=UserManager.FindById(user.Identity.GetUserId());
会话[“UserExists”]=true;
会话[“StartDate”]=DateTime.Now.ToString(“yyyyMMdd”);
会话[“EndDate”]=DateTime.Now.ToString(“yyyyMMdd”);
会话[“UserCompany”]=user.CompanyID;
最后一行代码是抛出错误的地方,在登录过程中,我是否无法访问UserManager以从User表获取所需的数据


非常感谢您的帮助!

您的意思是说用户对象是空的吗

var user = UserManager.FindById(User.Identity.GetUserId());
请在这里发布例外情况,以便我们提供更多有关此的详细信息


实体框架中的users表中是否还有CompanyId列?

经过进一步的研究和测试,我发现不能在与SignInManager.PasswordSignInAsync相同的调用中使用User.Identity.Name的原因是该User.Identity填写了来自身份验证cookie的声明(尚未解析)

所以我打了第二个电话,等待用户经理

var user = await UserManager.FindAsync(model.Email, model.Password);

它工作起来很有魅力。

System.NullReferenceException:Object reference未设置为对象的实例,并且没有公司ID最初不在他们给您的表中。我通过向ApplicationUser类添加属性对其进行了编辑,它在我的数据库中有值。是否成功返回了
user
tity.GetUserId()返回一个值?我能够解决我的问题,只是还不能接受我自己的答案,请参见下文。