如何删除 Sitecore 8.1 中的重复页面事件?

How can I remove duplicated page events in Sitecore 8.1?

我在 <registerPageEvent> 管道中有一个处理器,用于检查事件是否重复并将其删除。它在 7.2 上运行良好,但我必须升级到 8.1 Update 3,而且我找不到删除已添加的页面事件的方法。 这可能吗?我该怎么做?

来自 7.2 的一段代码:

Tracker.Visitor.DataSet.PageEvents.Rows.RemoveAt(Tracker.Visitor.DataSet.PageEvents.Count - 1);

从 Sitecore 7.5 开始,您无法通过 API 删除事件。 (唯一的解决方法是使用 .NET 反射)

即使在 7.2 中,这样做也不是一个好主意。原因是,当通过 API 添加事件时,会应用一些内部逻辑 - 例如重新计算访问的总价值。如果您手动删除事件,则不会触发这些内部操作,因此,您的访问数据最终可能会处于不一致状态。

最好的方法是在注册事件的代码中添加检查 - 只有当事件不是现有事件的副本时,才应注册该事件。