繁体   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