我無法弄清楚,但我有兩個MVC項目,其中包含Single Sign On登錄,我需要重新設置種子,並且在種子之後,userStore變量返回空值。MVC var userStore = new UserStore <ApplicationUser>(db);返回null
這是我的代碼(注意,DB工作正常,並發現我所有的表,也是AspNetUsers表):
private ApplicationDbContext db = new ApplicationDbContext();
,並在指數法(的UserManager行拋出,因爲userStore具有空值異常):
var userStore = new UserStore<ApplicationUser>(db);
var userManager = new UserManager<ApplicationUser>(userStore);
var userId = User.Identity.GetUserId();
var user = userManager.FindById(userId);
我haven't改變的工作溶液和最新的種子之間代碼的單個行,但我加入最後兩個種子之間的SSO配置。
編輯:
嘗試重新啓動計算機後問題仍然存在,但是當我嘗試使用其他用戶身份登錄,它工作正常。當試圖與第一用戶登錄我又得到另一個錯誤:
The provided anti-forgery token was meant for a different claims-based user than the current user.
於是,我在「的InPrivate窗口」和我得到的第一個用戶,但任何其他用戶原來的問題得到防僞錯誤代替。
編輯2:
試圖再次運行該項目,並出現原來的錯誤對於第一個用戶,但我嘗試登錄,在未來投防僞錯誤。
之後,嘗試登錄與另一個用戶,第一個用戶也會引發防僞造錯誤。
編輯3:
此特定行爲似乎與IE連接。在Chrome和Firefox中,我得到了原始錯誤,但我不能以登錄或用戶順序的任何組合方式複製任何防僞錯誤,但第一位用戶不斷獲得原始異常。
所以我想這是任何瀏覽器的問題的原始錯誤。
編輯4:
因爲我知道的準確代碼行引起該問題,我想我可以放心地假設在某種程度上是與以下。我可以在以下設置斷點:
var userStore = new UserStore<ApplicationUser>(db);
var userManager = new UserManager<ApplicationUser>(userStore);
,但可以不再設置在這條線斷點:
var userId = User.Identity.GetUserId();