这真的是一个非常简单的问题,但我似乎在这里或SDN上都找不到答案。
如何查看为访问过该网站的用户存储的配置文件值
举个例子详细说明:假设我有3个访问者,正在访问该网站,他们都在某个时候点击了一个时事通讯项目,因此他们的电子邮件已经与他们的asp会话id配对,所以我会有类似的东西
- User1@email.com和附加的asp会话id
- User2@email.com和附加的asp会话id
- User3@email.com和附加的asp会话id
现在让我们说User1@email.com他/她对摩托车有主要兴趣,我有一套轮廓钥匙包括汽车、摩托车和自行车。User1主要在摩托车页面上点击,因此该用户的密钥具有更高的值。
在某个地方,我应该能够看到用户的数据,以及他们存储的值(例如数据:汽车10,摩托车250,自行车40)。
我在哪里可以看到这些数据?还是这完全不可能?
您要查找的信息不是针对(ASP.Net成员资格)用户存储的,而是针对(Sitecore DMS)访问者存储的。
以下是查询当前访问者档案数据的一种方法:
var visit = Tracker.CurrentVisit;
foreach (var profile in visit.Profiles)
{
if (profile.ProfileName.ToLower() == "interest")
{
// Look at individual values
var values = VisitProfile.Parse(profile.PatternValues);
var motorcycles = values["motorcycles"];
// Look at pattern matched
profile.UpdatePattern();
var matchingPattern = profile.PatternLabel;
}
}
我自己解决了。我可能应该提到,它将用于定制时事通讯。
首先,我得到邮件列表中附加的内部sitecore用户名。
var username = System.Web.Security.Membership.GetUserNameByEmail(email);
然后我可以从用户名中获得访客ID。
var visitor = Sitecore.Analytics.Automation.VisitorManager.GetVisitorByExternalUser(username);
在这个访问者中,我要查找的具有配置文件密钥的数据集位于访问者中。DataSet.Profiles
现在我只需要获得多个访问者,但这只是一个SQL调用的问题,而不是使用VisitorManager.GetVisitorByExternalUser并查找所有出现的访问者。