【发布时间】:2013-07-16 14:12:02
【问题描述】:
我是 Sitecore Analytics 的新手,我遇到了一种情况,即我想在调用 REST 服务后保存一些 Analytics 数据。
我正在使用 Fiddler 调用 POST REST 服务。在 REST 服务中(我关注了类似的文章 Sitecore Analytics: Trigger profiles and events from webservice),我编写了以下代码。我正在传递正确的虚拟事件名称MLN360_BLDG_CLK_EN,它是我在/sitecore/system/Settings/Analytics/Page Events/ 下创建的
void TriggerPageEvent(string eventName)
{
if (!Tracker.IsActive)
{
Tracker.StartTracking();
}
Sitecore.Data.Database db = Sitecore.Configuration.Factory.GetDatabase("web");
Sitecore.Context.Item = db.GetItem("/sitecore");
PageEventData pageEventData = new PageEventData(eventName);
pageEventData.Text = "Value is here";
pageEventData.DataKey = String.Empty;
pageEventData.Data = " Data is here";
pageEventData.ItemId = new Guid(Sitecore.Context.Item.ID.ToString());
Tracker.CurrentPage.Register(pageEventData);
Tracker.Submit();
}
但是,我在PageEvents 表中根本没有看到任何记录。如果我使用此代码并将其粘贴到分配了演示文稿布局的项目(.aspx 页面)中并使用 Web 浏览器调用此项目(.aspx 页面),则记录将添加到数据库中
如何使用 Web 服务注册事件,以及如何使用 Fiddler 等客户端对其进行测试?
谢谢
【问题讨论】:
-
您是否从 Sitecore 中部署了 PageEvent?在内容编辑器中,单击“审核”选项卡,然后单击“工作流”块中的“部署”按钮。虽然如果您还没有这样做,我怀疑当您尝试在分析跟踪器中注册事件时会引发异常。
-
@AdamWeber:是的,我已经部署了页面事件。我也在 PageEventDefinitions 表中看到了我的事件,但在 PageEvents 表中没有。
-
有趣。我在本地环境中尝试了您的代码,但无法重现该问题,即页面事件已按预期在 PageEvents 表中注册。我对代码所做的唯一修改是删除设置 Sitecore.Context.Item - 您不需要使用 DMS 执行此操作。您是否检查过 Sitecore.Analytics.config 中的 Analytics.TrackerChanges.FlushInterval 设置?也许间隔设置为某个较大的数字,而将跟踪器数据写入数据库需要很长时间?
-
@AdamWeber:奇怪的是,如果我将此代码粘贴到页面(具有布局)并通过网络浏览器调用,事件就会被注册。但是,如果我使用 Fiddler 并为相同的 URL 发送 GET 请求,代码会被执行,但页面事件不会被注册。我确定 Fiddler 在请求期间不会发送一些信息,因为 Tracker 没有要跟踪的信息,因此它不会抱怨,也不会注册页面事件。如何使用 Fiddler 之类的客户端发送被跟踪的请求,我们可以在 PageEvents 表中看到条目。
-
@AdamWeber:终于!!问题在于使用 Fiddler,我使用谷歌的 Simple REST 客户端扩展来发出请求,我可以在数据库中看到页面事件。谢谢亚当。
标签: c# sitecore sitecore6 sitecore-dms