簡體   English   中英

Membership.GetUser()的代碼產生System.NullReferenceException錯誤。 這是VB.Net(ASP.Net 4)

[英]Code producing System.NullReferenceException error for Membership.GetUser(). This is VB.Net (ASP.Net 4)

我有一個不是靜態的Default.aspx頁面。 我添加了datalist和sqldatasources功能。 用戶登錄后,他/她將看到諸如已保存的鍛煉,已保存的設備,總回復等項目。這基於獲取當前登錄的用戶UserID。 當用戶登錄時,這很簡單,效果很好。但是,我不想強​​迫用戶登錄以查看“默認”頁面,因為它確實具有不需要登錄的功能。 當用戶沒有登錄時,我當然會收到[System.NullReferenceException]錯誤。 我很了解該錯誤,但不知道如何編寫代碼來修復它。 那是我需要幫助的地方。 我承認我比開發商更能成為設計師。 但是,我確實知道我收到的異常錯誤是由於我沒有在用戶未登錄時在代碼中設置值引起的。我不知道該怎么做,並且一周未成功編寫代碼。

下面的兩套代碼都可以為VB.Net/ASP.Net 4 / Visual Studio 2010編譯而沒有錯誤。 但是,如果未登錄,我仍然會收到System.NullReferenceException錯誤。我知道可以這樣做,但是我不知道正確的語法。 如果可以幫助,請在我的代碼中插入或寫出。 請告訴我在哪里找不到答案的答案。 我已經連續7天做到了。 我感謝我們的幫助。

局部類_Default繼承System.Web.UI.Page

Protected Sub SqlDataSource4_Selecting(ByVal sender As Object, ByVal e As SqlDataSourceCommandEventArgs) Handles SqlDataSource4.Selecting
    Dim MemUser As MembershipUser

    MemUser = Membership.GetUser()

        If Not MemUser Is DBNull.Value Then
            UserID.Text = MemUser.ProviderUserKey.ToString()
            e.Command.Parameters("@UserId").Value = MemUser.ProviderUserKey.ToString()

    End If

End Sub

-------------------------------------原始碼----------- --------------------

局部類_Default繼承System.Web.UI.Page

Protected Sub SqlDataSource4_Selecting(ByVal sender As Object, ByVal e As SqlDataSourceCommandEventArgs) Handles SqlDataSource4.Selecting
    Dim MemUser As MembershipUser
    MemUser = Membership.GetUser()
    UserID.Text = MemUser.ProviderUserKey.ToString()
    e.Command.Parameters("@UserId").Value = MemUser.ProviderUserKey.ToString()
End Sub
If MemUser IsNot Nothing Then
    UserID.Text = MemUser.ProviderUserKey.ToString()
    e.Command.Parameters("@UserId").Value = MemUser.ProviderUserKey.ToString()
End If

請注意,我寫Nothing代替DBNull.Value

但是,我在這里看到另一個問題:如果MemUser為空,則不要設置查詢的@UserId參數。 這可能會導致您的查詢出現問題。

DBNul.ValueNothing

更改為

If MemUser IsNot Nothing Then

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM