2009-10-25 33 views
3

我想從匿名用戶獲得aspnet成員資格UserId字段。如何獲取ASP.NET成員中的匿名用戶的aspnet_Users.UserId?

我在web.config中啓用了匿名鑑定:

<anonymousIdentification enabled="true" /> 

我也創建一個配置文件:

<profile> 

    <providers> 
    <clear /> 
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
     connectionStringName="ApplicationServices" 
     applicationName="/" /> 
    </providers> 

    <properties> 
    <add name="Email" type="System.String" allowAnonymous="true"/> 
    <add name="SomethingElse" type="System.Int32" allowAnonymous="true"/> 
    </properties> 

</profile> 

我看到我的aspnetdb\aspnet_Users表爲匿名用戶數據有資料信息組。

Userid         PropertyNames PropertyValuesString  
36139818-4245-45dd-99cb-2a721d43f9c5 Email:S:0:17: [email protected] 

我只需要找到如何獲得'Userid'值。

這是不可能使用:

Membership.Provider.GetUser(Request.AnonymousID, false); 

的Request.AnonymousID是不同的GUID和不等於36139818-4245-45dd-99cb-2a721d43f9c5。

有什麼辦法可以得到這個Userid。我想將它與匿名用戶的不完整活動相關聯。使用aspnet_Users的主鍵比創建我自己的GUID(我可以在配置文件中存儲)要好。

這基本上是一個dupe of this question但這個問題從來沒有真正的答案。

回答

4

您可以獲取用戶標識與此匿名用戶:

字符串userid = Request.AnonymousID

+0

奇怪。不知道我是如何錯過的。謝謝 – 2010-05-15 18:19:06

2

好的,所以MemberShip.GetUser()返回MembershipUser類型的對象。

鑽研更進在aspnetdb數據庫中的表看來,雖然排在aspnet_Users爲所有用戶(甚至是匿名的)創造的 - 是不是在aspnet_Membership除非useris實際認證/註冊創建的行。

但是,匿名用戶配置文件(aspnet_Users表)被賦予一個GUID而不是UserName

我還沒有找到一種方法來訪問匿名用戶的UserId屬性 - 但我意識到,真正的用戶名是更有用的關鍵無論如何。

UserId字段也存在於aspnet_Users表中,所以如果您確實需要唯一的UserId字段,那麼您可以通過'手動'SQL查找來獲得該字段。

相關問題