Sitecore Analytics:从Web服务触发配置文件和事件

前端之家收集整理的这篇文章主要介绍了Sitecore Analytics:从Web服务触发配置文件和事件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有Sitecore.Analytics的问题

从我的xslt,我使用jQuery对web服务进行ajax调用.

在我的网络服务中,我需要注册/保存一些Sitecore.Analytics数据.
问题是我无法使用Sitecore.Analytics.AnalyticsTracker.Current.

那我该怎么做TriggerProfile和TriggerEvent呢?
我想知道Sitecore.Analytics.AnalyticsManager是否可以提供任何帮助.

解决方法

我最近遇到了类似的情况,必须跟踪Web服务中的分析事件.如您所述,问题是AnalyticsTracker.Current在Web服务的上下文中为空.

这样做的原因是在trackAnalytics管道期间填充了AnalytisTracker.Current,而后者又在renderLayout管道中调用,只有在上下文项不为null并且上下文项具有已定义的演示设置时才会调用此管道.

话虽如此,有一个解决方法:)

您可以手动启动AnalyticsTracker,如下所示:

if (!AnalyticsTracker.IsActive)
{
    AnalyticsTracker.StartTracking();
}

然后,您可以检索AnalyticsTracker实例,如下所示:

AnalyticsTracker tracker = AnalyticsTracker.Current;
if (tracker == null)
    return;

最后,您可以创建并触发您的事件,个人资料等…下面的示例会触发一个PageEvent.注意:为了获取Timestamp属性,需要特别考虑PageEvent(以及很可能是其他事件).请参阅以下代码中的注释.

if (!AnalyticsTracker.IsActive)
{
    AnalyticsTracker.StartTracking();
}

AnalyticsTracker tracker = AnalyticsTracker.Current;
if (tracker == null)
    return;

string data = HttpContext.Current.Request.UrlReferrer != null
                        ? HttpContext.Current.Request.UrlReferrer.PathAndQuery
                        : string.Empty;

//Need to set a context item in order for the AnalyticsPageEvent.Timestamp property to 
//be set. As a hack,just set the context item to a known item before declaring the event,//then set the context item to null afterwards.
Sitecore.Context.Item = Sitecore.Context.Database.GetItem("/sitecore");

AnalyticsPageEvent pageEvent = new AnalyticsPageEvent();
pageEvent.Name = "Download Registration Form Submitted";
pageEvent.Key = HttpContext.Current.Request.RawUrl;
pageEvent.Text = HttpContext.Current.Request.RawUrl;
pageEvent.Data = data;

//Set the AnalyticsPageEvent.Item property to null and the context item to null.
//This way the PageEvent isn't tied to the item you specified as the context item.
pageEvent.Item = null; 
Sitecore.Context.Item = null;

tracker.CurrentPage.TriggerEvent(pageEvent);
tracker.Submit();

希望这可以帮助!

猜你在找的HTML相关文章