MVC var userStore = new UserStore <applicationuser>(db);返回null

时间:2016-04-20 07:57:01

标签: c# asp.net-mvc entity-framework-6 asp.net-identity usermanager

我无法理解,但是我有两个单点登录登录的MVC项目我需要重新设置,在种子之后,userStore变量返回一个空值。

这是我的代码(注意数据库工作正常并找到我的所有表以及AspNetUsers表):

private ApplicationDbContext db = new ApplicationDbContext();

并且在Index方法中(userManager行抛出异常,因为userStore具有null值):

        var userStore = new UserStore<ApplicationUser>(db);
        var userManager = new UserManager<ApplicationUser>(userStore);
        var userId = User.Identity.GetUserId();
        var user = userManager.FindById(userId);

我没有在工作解决方案和最新种子之间更改一行代码,但我在最后两个种子之间添加了SSO配置。

编辑:

尝试重新启动计算机并且问题仍然存在,但是当我尝试使用其他用户登录时,它运行正常。当尝试再次使用第一个用户登录时,我收到另一个错误:

The provided anti-forgery token was meant for a different claims-based user than the current user.

所以我尝试了一个“InPrivate Window”,我得到了第一个用户的原始问题,但是其他任何用户都得到了防伪错误。

编辑2:

尝试再次运行项目,原始错误发生在第一个用户,但下一次我尝试登录时抛出了防伪错误。

在尝试使用其他用户登录后,第一个用户也会抛出防伪错误。

编辑3:

此特定行为似乎与IE相关联。在Chrome和Firefox中,我得到了原始错误,但我无法以登录或用户的顺序组合复制任何防伪错误,但第一个用户不断抛出原始异常。

所以我猜这是原始错误,这是任何浏览器的问题。

编辑4:

由于我知道导致问题的确切代码行,我想我可以安全地假设以下内容在某种程度上相关..我可以在以下内容中设置断点:

        var userStore = new UserStore<ApplicationUser>(db);
        var userManager = new UserManager<ApplicationUser>(userStore);

但不能再在此行设置断点:

        var userId = User.Identity.GetUserId();

1 个答案:

答案 0 :(得分:0)

终于在另一个线程中为我找到了解决方案。我禁用了这个选项:

Project Properties> Build> Optimize code

它解决了原始问题以及最后的断点问题