2013-01-17 42 views
4

如何在ASP.Net CreateUserWizard中獲取新註冊用戶的用戶ID?如何在ASP.Net CreateUserWizard中爲新的註冊用戶獲取用戶ID?

我有一個頁面允許新用戶註冊一個創建用戶嚮導。剛創建用戶後,我想使用新用戶的用戶ID和電子郵件在客戶詳細信息表中插入一行。

我試着在CreateUserWizard1_CreatedUser中放一些代碼來獲取用戶ID。但是,從我所瞭解的情況來看,用戶是在這個時候創建​​的;但是,此時用戶尚未登錄。我收到一個錯誤,說...

「NullReferenceException」由用戶代碼處理。 對象不設置到對象的實例。」

如果我把一個斷點調試,我可以看到,在客戶的值爲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嗎?


這是我註冊頁面上的代碼不工作。上的代碼行中出現錯誤:「字符串客戶ID =」

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); 

...

} 

回答

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(); 
+0

這做到了。非常感謝,malkassem。 – Ken