首先,这是触发目标的正确方法:
if (Sitecore.Analytics.Tracker.IsActive)
{
if (Sitecore.Analytics.Tracker.Current.CurrentPage != null)
{
var goalId = new Sitecore.Data.ID("{EDA8EA2C-7AF5-4D0F-AF76-A9C4E6BD7169}");
Sitecore.Analytics.Data.Items.PageEventItem goalToTrigger =
Sitecore.Analytics.Tracker.DefinitionItems.PageEvents[goalId];
if (goalToTrigger != null)
{
Sitecore.Analytics.Model.PageEventData eventData =
Sitecore.Analytics.Tracker.Current.CurrentPage.Register(goalToTrigger);
}
else
{
Sitecore.Diagnostics.Log.Error("Goal with ID " + goalId + " does not exist", this);
}
}
else
{
Sitecore.Diagnostics.Log.Error("Tracker.Current.CurrentPage is null", this);
}
}
else
{
Sitecore.Diagnostics.Log.Warn("The tracker is not active. Unable to register the goal.", this);
}
注册后,不应尝试更改事件数据.
此外,您不应该调用Interaction.AcceptModifications()
,因为此方法是xDB在某些时候内部使用的方法.
CurrentPage.Register()
是你唯一需要做的事情.
我不建议使用Session.Abandon()
.它可能会导致您将交互保存到集合数据库,但这样就会破坏Sitecore会话的正常流程.这可能导致的一个问题是交互的联系人将保持锁定21分钟(或者无论您的会话超时设置为+ 1分钟).
相反,出于测试目的,我建议您将会话超时设置为1分钟,并在最后一页请求后等待1分钟.此设置位于Web.config中作为属性
.
确保analytics
正确设置连接字符串.
确保您拥有xDB许可证.您可以在Sitecore控制面板 - >管理 - >已安装的许可证中查看可用许可证列表.
a)在Sitecore 8.0或更低版本中,许可证名称为Sitecore.OMS
.
b)在Sitecore 8.1中Sitecore.xDB.base
.
确保已启用xDB及其跟踪子系统.
一)在Sitecore的8.0或更低,Analytics.Enabled
应该被设置为true
在Sitecore.Analytics.config.
二)在Sitecore的8.1,这两个Xdb.Enabled
和Xdb.Tracking.Enabled
应设置true
在Sitecore.Xdb.config.
还应在网站定义上启用跟踪.
一)在Sitecore的8.0或更低,到
在部分Web.config文件,并检查enableAnalytics
是不是设置false
上
,或者你使用的任何部位.
B)在Sitecore的8.1,你应该确保enableTracking
被设置true
为您的网站在Sitecore.config.
在让会话过期之前尝试制作多个页面请求而不是一个.
尝试通过在Sitecore.Analytics.Tracking.config中设置Analytics.Robots.IgnoreRobots
和Analytics.AutoDetectBots
来禁用机器人检测.如果在此之后保存了相互作用,我将使用进一步的说明更新我的答案.false
如果没有任何帮助,请完成文章疑难解答xDB数据问题中列出的步骤.