2012-02-19 29 views
5

使用Asp.net會員&資料提供者:是否可以使用他們的會員用戶ID檢索用戶配置文件?

我是否能夠使用他們的會員用戶名,而不是他們的用戶名來獲取用戶的個人資料?

我想問的原因是因爲如果我有用戶ID,而不是用戶名,我將不得不代碼如下兩行寫而不是

Dim MembershipUser As MembershipUser = Membership.GetUser("UserID") 
    Dim Profile As Profile = Profile.GetProfile(MembershipUser.UserName) 

昏暗的輪廓外形=檔案.GetProfile(「UserID」)

這會影響性能嗎?我的設計不好嗎?我錯過了什麼嗎?

請注意:我知道我可以檢索使用下面的代碼在用戶登錄的電流:HttpContext.Current.User.Identity.Name

回答

3
Guid userId = Membership.GetUser().ProviderUserKey as Guid; 

會給你,你以後是用戶ID 。爲了簡化asp.net應用程序,我通常會在用戶登錄時插入會話中。

asp.net成員資格表具有每個應用程序的唯一用戶名,並且可以在一個數據庫中定義多個應用程序,所以調用Profile.GetProfile(string userName)也可以從不同的應用程序返回配置文件。這就是爲什麼沒有GetProfile(userName),並且自己實現它不是個好主意。

+0

我正在構建一個ASP.Net Web應用程序,而不是一個網站,所以我使用了WebProfileBuilder 1.3。 (因爲我真的沒有看到任何其他的方式嗎?)...我可以成功地使用:WebProfile.GetProfile(UserName),但是沒有方法可以傳入ID。我必須定製它嗎? – Haris 2012-02-26 01:37:26

+0

如果您在Visual Studio中創建新網站,然後添加一些屬性,例如。然後,您可以使用以下代碼檢索任何用戶的郵編代碼值:Profile.GetProfile(「用戶名」)。PostalCode。那麼爲什麼你說'這就是爲什麼沒有GetProfile(userName),並且它是一個不好的主意「? – Haris 2012-02-26 01:58:20

+0

從你的問題中不清楚你真正想要的究竟是什麼......用vanilla asp.net成員簡單看看我的asp.net應用程序,我問了這些問題的系列:「這會影響性能嗎?我的設計不好?我錯過了什麼嗎?「 – b0rg 2012-02-28 09:47:28

相關問題