2014-03-31 96 views
3

我在.NET Web應用程序中看到了一個奇怪的行爲。它很少發生,但是如果我坐在一個頁面上並繼續點擊F5,最終我將有Membership.GetUser()返回NULL,即使Request.IsAuthenticated返回true。Request.IsAuthenticated爲TRUE,但Membership.GetUser()爲NULL

if (Request.IsAuthenticated) 
{ 
    MembershipUser user = Membership.GetUser(); //user is occasionally null. 
} 

我的理解是,這不應該投入while循環的getUser()調用(這消除了問題,因爲發生,問題的間歇性讓我覺得這是一個錯誤,但除了GetUser()在第二次嘗試中工作),我不知道還有什麼地方可以找出造成這種情況的原因。我們在另一臺服務器上使用Web服務作爲我們的成員資格提供程序,但是我將其作爲超時問題予以解決,這會返回一個不同的錯誤。

回答

5

成員身份驗證與身份驗證無關(幾乎沒有任何關係)。 Request.IsAuthenticated僅意味着瀏覽器計算機上有一個有效的FormsAuthentication cookie。除了提供正確的IIdentity.Name值之外,它與獲取成員信息無關。

這似乎很可能是您的會員提供商的問題。您提到您使用Web服務來檢索會員信息。你說你已經消除了這個問題的根源,但不要說你是如何消除它的。

我會說這很有可能與此webservice有關。

+0

我還沒有消除webservice作爲問題,它可能會返回「null」每50個左右命中,但我確實消除了與web服務的連接問題。如果IsAuthenticated和Membership是不相關的,那麼我認爲這回答了我的問題。謝謝。 – ideonexus

相關問題