2010-08-04 45 views
0

在我的母版頁的代碼隱藏我試圖讓認證的用戶名(如果有的話)之一:「Context.User」可以爲null嗎?

public Guid CurrentUserID 
    { 
     get 
     { 
      Guid userID = new Guid(); 
      if (Context.User.Identity.IsAuthenticated) 
      { 
       MembershipUser user = Membership.GetUser(Context.User.Identity.Name); 
       userID = (Guid)user.ProviderUserKey; 
      } 
      return userID; 
     } 
    } 

一旦錯誤「對象引用不設置到對象的實例」出現。我懷疑問題是在這種情況下Context.User = null。這是否是原因?

+0

您是否附加調試器並確認您的懷疑?也許'Identity'爲空。 – leppie 2010-08-04 12:16:07

+0

不幸的是,這個錯誤是由我們自己的記錄員在發佈的網站上撰寫的,只有一次。在調試模式下,我從未遇到過錯誤 – landless 2010-08-04 12:38:54

+0

您是否已經實現了您自己的會員供應商? – onof 2010-08-05 06:44:41

回答

0

也許用戶由DB中刪除,同時,他被驗證,所以Membership.GetUser回到nulluser.ProviderUserKey已拋出NullReferenceException

+0

是的,它似乎是邏輯,但事實並非如此。可能Cookie文件已被刪除。這是否是原因? – landless 2010-08-04 21:38:10

+0

如果cookie被刪除,則用戶不再被認證。 – onof 2010-08-04 22:38:58