加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

从ASP.Net获取UserID登录控件LoggedIn事件

发布时间:2020-12-16 07:30:56 所属栏目:asp.Net 来源:网络整理
导读:在ASP.Net中,我试图在Login控件的LoggedIn事件中获取刚刚登录的用户的UserId(即用户GUID).也就是说,我希望在用户移动到下一页之前抓取UserId.这是我正在使用的代码: Protected Sub Login1_LoggedIn(ByVal sender As Object,_ ByVal e As System.EventArgs)
在ASP.Net中,我试图在Login控件的LoggedIn事件中获取刚刚登录的用户的UserId(即用户GUID).也就是说,我希望在用户移动到下一页之前抓取UserId.这是我正在使用的代码:

Protected Sub Login1_LoggedIn(ByVal sender As Object,_
  ByVal e As System.EventArgs) Handles Login1.LoggedIn

    Dim UserId As String
    UserId = Membership.GetUser.ProviderUserKey.ToString()

End Sub

但是,我得到一个“对象引用没有设置为对象的实例”错误.当我在后续页面中使用它时,当登录用户访问这些页面时,相同的代码也能正常工作.

解决方法

ScottGu解决了这个问题,正如在ASP.NET论坛上的 this blog post中所解释的那样:

The LoggedIn event fires immediately
after the user is logged in with the
login control — but not before the
next request to the site. As such,
the User object isn’t filled out yet.

如果您将代码更改为:

Dim UserId As String
UserID = Membership.GetUser(Login1.UserName).ProviderUserKey.ToString()

它应该工作正常.调用Membership.GetUser而不将Username作为参数传递将期望获取“当前”登录用户.当然,由于上述原因,由于尚未填充User对象,因此失败.通过将Login控件的UserName属性作为参数传递给GetUser()方法,您可以显式强制Membership.GetUser方法从用户存储(即数据库)中检索名称指定的用户.这可确保Membership.GetUser方法返回有效的MembershipUser对象,该对象允许您访问ProviderUserKey属性.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读