Группы посетителей, использующие критерий просмотренных страниц, не работают

Я работаю над страницей, которая должна использовать группы посетителей, чтобы персонализировать ее содержание. Тем не менее, я не могу получить критерий посещенной страницы для соответствия.

Я предполагаю, что критерий посещенной страницы использует класс EPiServer.Personalization.VisitorGroups.Criteria.ViewedPagesCriterion, который хранит просмотренные страницы в сеансе HttpContext с ключом EPiServer:ViewedPages, К сожалению, сессионный ключ, кажется, не добавляется вообще, когда я вхожу на указанные страницы.

Кто-нибудь понял, почему это не работает?


РЕДАКТИРОВАТЬ: я теперь попытался реализовать Критерий сам, в основном с использованием декомпилированного кода из EPiServer.Personalization.VisitorGroups.Criteria.ViewedPagesCriterion, Оказывается, что критерий соответствует VisitedPage событие, которое предположительно возникает при посещении страницы. Отладкой я определил, что подписка на событие успешна, но обработчик событий никогда не вызывается. Это означает, что по какой-то причине EPiServer не вызывает событие.

Я пытался подписаться на StartRequest событие вместо этого, и в этом случае вызывается обработчик. Возникает вопрос: почему VisitedPage событие не возникает при посещении страниц?

1 ответ

Решение

VisitedPage событие происходит только тогда, когда страница отображается через контроллер, который имеет ViewedPageCriterionAttribute, Базовый контроллер EPiServer.Web.Mvc.PageController<T> предоставленный EPiServer имеет этот атрибут, поэтому он работает, когда контроллеры наследуются от этого контроллера.

Если вы не хотите использовать PageController, атрибут должен использоваться на вашем пользовательском контроллере:

[ViewedPageCriterion]
public class MyController<T> : Controller<T> where T : IDefaultModel
{
    // controller implementation
}
Другие вопросы по тегам