Группы посетителей, использующие критерий просмотренных страниц, не работают
Я работаю над страницей, которая должна использовать группы посетителей, чтобы персонализировать ее содержание. Тем не менее, я не могу получить критерий посещенной страницы для соответствия.
Я предполагаю, что критерий посещенной страницы использует класс 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
}