如何为ASP.NET成员资格中的匿名用户获取aspnet_Users.UserId?
-
06-07-2019 - |
题
我正在尝试从匿名用户那里获取aspnet成员 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: me@example.com
我只需要找到如何获取'Userid'值。
无法使用:
Membership.Provider.GetUser(Request.AnonymousID, false);
Request.AnonymousID是一个不同的GUID,不等于36139818-4245-45dd-99cb-2a721d43f9c5。
有没有办法获得此Userid。我想将它与匿名用户的不完整活动相关联。使用 aspnet_Users
的主键比创建我自己的GUID(我可以做并存储在配置文件中)更可取。
这基本上是这个问题的对决方式但是这个问题从未真正回答过。
解决方案
您可以通过以下方式获取匿名用户的UserId:
string userId = Request.AnonymousID
其他提示
好的,所以 MemberShip.GetUser()
返回 MembershipUser
类型的对象。
在 aspnetdb
数据库的表格中深入研究似乎尽管在 aspnet_Users
中为所有用户(甚至是匿名用户)创建了一行 - 但是没有创建一行在aspnet_Membership中,除非useris实际验证/注册。
但是,匿名用户配置文件(aspnet_Users表)被赋予GUID而不是 UserName
。
我仍然没有找到一种方法来访问匿名用户的 UserId
属性 - 但我已经意识到,无论如何,用户名确实是更有用的密钥。
UserId
字段也存在于 aspnet_Users
表中,因此,如果您确实需要唯一的UserId字段,那么您可以通过“手动”SQL查找来获取它。 / p>