4

如何在 ASP.Net CreateUserWizard 中获取新注册用户的用户 ID?

我有一个页面,允许新用户注册创建用户向导。创建用户后,我想使用新用户的用户 ID 和电子邮件在客户详细信息表中插入一行。

我尝试在 CreateUserWizard1_CreatedUser 中放入一些代码来获取用户 ID。但是,据我所知,用户是在此时创建的;但是,此时用户尚未登录。我收到一个错误提示...

“NullReferenceException”由用户代码处理。对象未设置为对象的实例。”

如果我在调试期间设置断点,我可以看到 customerId 的值为 null。

根据我在 MSDN 网站上阅读的内容,CreatedUser 事件...“在成员资格提供商创建新的网站用户帐户后发生。”

我想在创建用户向导更改为显示“继续”按钮之前将该行添加到客户详细信息表中。此时,用户可以转到其他页面或关闭应用程序。

CreatedUser 之后是否还有其他事件可以在其中放置一些代码?我看到有一个 Unload 事件。 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.createuserwizard_events%28v=vs.110%29.aspx

我可以在 CreatedUser 事件中以某种方式登录用户来获取用户 ID 吗?


这是我在注册页面上的代码不起作用。错误发生在代码行:“string customerId =”

    protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
{
    // Add the Role of Customers to the new user.
    Roles.AddUserToRole((sender as CreateUserWizard).UserName, "Customers");

    // Get the current user's ID and email
    string customerId = Membership.GetUser(HttpContext.Current.User.Identity.Name).ProviderUserKey.ToString();
    string email = Membership.GetUser(HttpContext.Current.User.Identity.Name).Email.ToString();
    bool success = CustomerDetailsAccess.CreateCustomerDetails(customerId, email);

...

}
4

1 回答 1

5

当用户正在经历注册过程时,HttpContext.Current.User.Identity除非注册的用户已经登录,否则不会设置(匿名访问)。

要解决此问题,您需要从向导而不是上下文中获取用户名。

要解决此问题,请更改以下行:

string customerId = Membership.GetUser(HttpContext.Current.User.Identity.Name).ProviderUserKey.ToString();

对此:

string customerId = Membership.GetUser((sender as CreateUserWizard).UserName).ProviderUserKey.ToString();
于 2013-01-17T19:39:21.850 回答