Membership Sitecore自定义用户配置文件-存储在哪里?如何查询

Membership Sitecore自定义用户配置文件-存储在哪里?如何查询,membership,sitecore,Membership,Sitecore,我已经在Sitecore的core数据库中创建了一个自定义用户配置文件模板和对象(根据Security API Cookbook) 我可以通过编程方式选择它(根据安全API手册),这样我的外联网用户就有了一个扩展的配置文件,它涵盖了所有常见的可疑信息(地址、电话、电子邮件格式等) 但是,这些数据存储在哪里?如果我想查询数据库以返回基于此概要文件数据的用户子集,那么如何访问它 extranet成员系统的一个典型要求是提取一个用户列表,以便在电子邮件或电话类型的活动中联系。这可以通过Sitecore

我已经在Sitecore的core数据库中创建了一个自定义用户配置文件模板和对象(根据Security API Cookbook)

我可以通过编程方式选择它(根据安全API手册),这样我的外联网用户就有了一个扩展的配置文件,它涵盖了所有常见的可疑信息(地址、电话、电子邮件格式等)

但是,这些数据存储在哪里?如果我想查询数据库以返回基于此概要文件数据的用户子集,那么如何访问它

extranet成员系统的一个典型要求是提取一个用户列表,以便在电子邮件或电话类型的活动中联系。这可以通过Sitecore会员制实现吗

更新>
我猜一下,配置文件数据存储在aspnet_profile.PropertyValuesBinary中。。这将使我几乎无法质疑,也不符合我的目的。这是不幸的。因此,为了扩展我的问题,如果是这样的话,是否可以让Sitecore将这些值存储在文本字段中以便于搜索?

SqlProfileProvider的标准Microsoft实现(默认情况下在Sitecore中使用)将用户配置文件信息存储在aspnet_profile表中。所有属性都序列化到PropertyNames/PropertyValuesString列中。PropertyValuesBinary用于存储二进制数据(图像)。如果查看System.Web.Profile.SqlProfileProvider、SetPropertyValues方法的代码,可以找到更多详细信息

接下来,将用户配置文件中定义的所有自定义属性序列化为配置文件类的SerializedData属性,并与任何其他属性一样,再次序列化为PropertyNames/PropertyValuesString列

另外,aspnet_成员表中存储了两个属性(出于某种原因)-电子邮件和注释

因此,如果您要通过电子邮件查询用户,可以使用MembershipProvider的FindUsersByEmail方法。否则,如果您计划按另一个属性值进行筛选,我想,您必须获取所有用户并筛选获得的集合


希望这有帮助。

上周我遇到了这个问题,没有找到一个永久的解决方案,但为了解决我的特殊问题,我编写了一个小帮助页面,并将其添加为Sitecore应用程序,以便从CMS界面访问。它所做的只是查询所有用户,并确定他们是否分配了类似5-6个配置文件属性中的任何一个

var userList=Sitecore.Security.Accounts.UserManager.GetUsers();
这是获取用户的相关行,它返回Sitecore.Common.IFilterable

因此,如果你需要从所有用户那里获取个人资料信息,你可以这样做:

foreach(用户列表中的Sitecore.Security.Accounts.User)
{
Sitecore.Security.UserProfile profile=user.profile;
字符串whicher=profile[“whicher”];
//把任何东西加到清单上
}

这对我来说效果很好,但我不知道在你的情况下它有多可行。

是的,只有在你有几个用户的情况下,才能获得完整的用户列表。我计划了几千,可能是上万。。尽管这种方法可行,“它在您的解决方案中的可行性如何”是一个大问题。但是干杯!真棒-正是我需要的报告目的,提取出一些个人资料信息进行进一步处理。谢谢。我想我正在寻找有关Sitecore如何扩展SqlProfileProvider的信息。。然而,似乎正是这样。。我以前发现,用于存储数据的方法定义了属性值最终位于哪个字段(字符串/二进制)。。SetPropertyValue(字符串键,对象值)将其放入二进制字段,而SetCustomProperty(字符串键,字符串值)将其放入字符串字段。。我仍然认为,微软和Sitecore都未能实现一个类似于死狗的可查询的评测解决方案。