使用“已浏览页面”标准的访问者群组无效

时间:2015-05-06 08:33:35

标签: episerver episerver-7

我正在开展一个应该使用访问者群体来个性化其内容的页面。但是,我似乎无法使访问页面标准匹配。

我假设访问页面标准使用类EPiServer.Personalization.VisitorGroups.Criteria.ViewedPagesCriterion,它使用键EPiServer:ViewedPages将查看过的页面存储在HttpContext会话中。不幸的是,当我进入指定的页面时,会话密钥似乎根本没有添加。

有谁知道它为什么不起作用?

编辑:我现在尝试自己实施Criterion,基本上使用来自EPiServer.Personalization.VisitorGroups.Criteria.ViewedPagesCriterion的反编译代码。事实证明,该标准订阅to a VisitedPage event,这可能是在访问页面时引发的。通过调试,我确定事件订阅成功,但从不调用事件处理程序。这意味着,由于某种原因,EPiServer不会引发事件。

我尝试订阅StartRequest event,而在这种情况下,处理程序调用。这引出了一个问题:为什么访问页面时不会引发VisitedPage事件?

1 个答案:

答案 0 :(得分:1)

仅当通过具有VisitedPage的控制器显示页面时,才会触发ViewedPageCriterionAttribute事件。 EPiServer提供的基本控制器EPiServer.Web.Mvc.PageController<T>具有此属性,因此当控制器从此控制器继承时,它将起作用。

如果您不想使用PageController,则必须在自定义控制器上使用该属性:

[ViewedPageCriterion]
public class MyController<T> : Controller<T> where T : IDefaultModel
{
    // controller implementation
}