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

如何在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); 

 } 

当用户进行注册过程时,除非用户注册已经登录,否则不会设置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();