媒体项目的Sitecore目标don';不影响敬业度

媒体项目的Sitecore目标don';不影响敬业度,sitecore,sitecore7.2,Sitecore,Sitecore7.2,我使用Sitecore 7.2修订版140526+DMS。我正在尝试将目标分配给媒体项(PDF)。当我尝试下载此媒体项目时,目标会在PageEvents表中注册,但访问的参与值不会更改。我在StartTrackingProcessor中发现以下代码: Tracker.CurrentPage.OnCancel += (EventHandler)((obj, args) => { AcceptChangesArgs acceptChangesArgs = args as AcceptC

我使用Sitecore 7.2修订版140526+DMS。我正在尝试将目标分配给媒体项(PDF)。当我尝试下载此媒体项目时,目标会在PageEvents表中注册,但访问的参与值不会更改。我在StartTrackingProcessor中发现以下代码:

Tracker.CurrentPage.OnCancel += (EventHandler)((obj, args) =>
{
    AcceptChangesArgs acceptChangesArgs = args as AcceptChangesArgs;
    if (acceptChangesArgs == null)
        return;
    VisitorDataSet.VisitsRow currentVisit = acceptChangesArgs.Visitor.CurrentVisit;
    if (currentVisit == null)
        return;

    Tracker.CurrentPage.RollBackValue(pageEventData, currentVisit);
});
此代码防止管道中某个位置取消的页面的参与值增加。 然后我在Sitecore.Analytics.RobotDetection.Media.MediaRequestEventHandler中找到了取消页面的代码,Sitecore.Analytics.RobotDetection.config启用了该代码:

using (new ContextItemSwitcher(obj))
{
    try
    {
        this.StartTracking();
        VisitorDataSet.PagesRow previousPage = Tracker.CurrentVisit.PreviousPage;
        if (previousPage != null)
        {
            Guid pageId = previousPage.PageId;
            foreach (VisitorDataSet.PageEventsRow pageEventsRow in Enumerable.ToArray<VisitorDataSet.PageEventsRow>(Tracker.CurrentPage.PageEvents))
                pageEventsRow.PageId = pageId;


            Tracker.CurrentPage.Cancel();
        }
        this.EndTracking();
    }
    catch (Exception ex)
    {
        Log.Error("Media request analytics failed", ex, this.GetType());
    }
}
<event name="media:request">
    <handler patch:instead="*[@type='Sitecore.Analytics.Media.MediaRequestEventHandler, Sitecore.Analytics']" type="Sitecore.Analytics.RobotDetection.Media.MediaRequestEventHandler, Sitecore.Analytics.RobotDetection" method="OnMediaRequest"/>
</event>
使用(新的ContextItemSwitcher(obj))
{
尝试
{
这个.StartTracking();
VisitorDataSet.PagesRow previousPage=Tracker.CurrentVisite.previousPage;
如果(上一页!=null)
{
Guid pageId=previousPage.pageId;
foreach(可枚举.ToArray(Tracker.CurrentPage.PageEvents)中的VisitorDataSet.PageEventsRow PageEventsRow)
pageEventsRow.PageId=PageId;
Tracker.CurrentPage.Cancel();
}
这是.EndTracking();
}
捕获(例外情况除外)
{
Log.Error(“媒体请求分析失败”,例如,this.GetType());
}
}
因此,此MediaRequestEventHandler取消页面,因此参与值不会增加。我可以覆盖此行为或禁用RobotDetection.config,但我想了解其后果以及为什么这样做,我知道有一些建议不禁用Sitecore.Analytics.RobotDetection.config


因此,我的问题是:为媒体项目下载访问分配点数的最佳方式是什么?

对于可能遇到相同问题的人,这里是sitecore支持部门的回应。此行为被报告为一个bug,作为一种解决方法,他们建议在Sitecore.Analytics.RobotDetection.config中注释掉以下几行:

using (new ContextItemSwitcher(obj))
{
    try
    {
        this.StartTracking();
        VisitorDataSet.PagesRow previousPage = Tracker.CurrentVisit.PreviousPage;
        if (previousPage != null)
        {
            Guid pageId = previousPage.PageId;
            foreach (VisitorDataSet.PageEventsRow pageEventsRow in Enumerable.ToArray<VisitorDataSet.PageEventsRow>(Tracker.CurrentPage.PageEvents))
                pageEventsRow.PageId = pageId;


            Tracker.CurrentPage.Cancel();
        }
        this.EndTracking();
    }
    catch (Exception ex)
    {
        Log.Error("Media request analytics failed", ex, this.GetType());
    }
}
<event name="media:request">
    <handler patch:instead="*[@type='Sitecore.Analytics.Media.MediaRequestEventHandler, Sitecore.Analytics']" type="Sitecore.Analytics.RobotDetection.Media.MediaRequestEventHandler, Sitecore.Analytics.RobotDetection" method="OnMediaRequest"/>
</event>


对媒体文件的请求总是被取消,还是仅当它是会话的第一个请求时才被取消?7.5中的改进之一是在首次访问时对媒体的机器人检测进行返工。因此,这可能是Sitecore支持可以帮助您的。@BenGolden从代码和我测试时看到的情况来看,它似乎总是被取消。只是确认一下,您的页面布局中是否有VisitorIdentification控件?@IanGraham是的,我在布局中有VisitorIdentification控件。