gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 22:26:03 25 4
gpt4 key购买 nike

在 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 将期望获取“当前”登录用户。当然,这会由于上述原因而失败,因为 User 对象尚未填充。通过将 Login 控件的 UserName 属性作为参数传递给 GetUser() 方法,您可以明确强制 Membership.GetUser 方法从用户存储(即数据库)中检索名称指定的用户。这确保 Membership.GetUser 方法返回一个有效的 MembershipUser 对象,它允许您访问 ProviderUserKey 属性。

关于asp.net - 从 ASP.Net 登录控件 LoggedIn 事件获取 UserID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1599698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com