我无法理解,但是我有两个单点登录登录的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();
答案 0 :(得分:0)
终于在另一个线程中为我找到了解决方案。我禁用了这个选项:
Project Properties> Build> Optimize code
它解决了原始问题以及最后的断点问题