[英]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.Value
与Nothing
。
更改为
If MemUser IsNot Nothing Then
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.