3

我正在尝试UserId从匿名用户那里获取 aspnet 成员资格字段。

我在 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:   me@example.com

我只需要找到如何获取 'Userid' 值。

无法使用:

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

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

有什么办法可以得到这个 Userid。我想将它与匿名用户的不完整活动相关联。使用的主键aspnet_Users比创建我自己的 GUID(我可以这样做并存储在配置文件中)更可取。

这基本上是对这个问题的欺骗,但这个问题从未真正得到回答。

4

2 回答 2

4

您可以通过以下方式获取匿名用户的 UserId:

字符串 userId = Request.AnonymousID

于 2010-05-15T13:10:32.147 回答
2

好的,所以 MemberShip.GetUser()返回一个类型为 的对象MembershipUser

深入研究aspnetdb数据库中的表,似乎虽然aspnet_Users为所有用户(甚至匿名用户)创建了一行 - 除非用户实际经过身份验证/注册,否则不会在 aspnet_Membership 中创建一行。

但是,匿名用户配置文件(aspnet_Users 表)被赋予了 GUID 而不是UserName.

我仍然没有找到访问UserId匿名用户属性的方法——但我意识到用户名确实是更有用的密钥。

UserId字段也存在于aspnet_Users表中,因此如果您确实需要唯一的 UserId 字段,那么您可以通过“手动”SQL 查找来获取它。

于 2009-10-27T01:40:13.427 回答