Как заставить ActionFilters и OutputCaching работать вместе? - PullRequest
2 голосов
/ 09 сентября 2011

У меня есть ActionFilter, который делает запись. Я хочу, чтобы это регистрировало запросы и параметры, которые поступают на сервер. Это отлично работает. Однако, когда я добавляю OutputCaching, он будет регистрировать только первый запрос, а не другие.

Я даже пытался создать ActionFilter, который ведет себя так:

public class OutputCacheLoggingFilterAttribute : OutputCacheAttribute
{     
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        //Do my stuff

        base.OnActionExecuting(filterContext);
    }
}

Я понял, что если я унаследовал от выходного кэша, он ИМЕЕТ , чтобы запустить мой код, прежде чем он доберется до базового вызова. И все же я ошибся, и почему-то мой код будет выполняться только один раз.

1 Ответ

0 голосов
/ 14 сентября 2011

Ну, насколько я знаю, в этой системе есть «взлом», который гарантирует, что атрибуты авторизации выполняются каждый раз, независимо от кэширования. Возможно, вы можете заставить свой фильтр реализовывать IAuthorizationFilter и выполнять свою работу в методе OnAuthorization. Да, это неприятный трюк, но все же лучше, чем «взлом» самой системы кеширования, я думаю.

Дайте нам знать, если это работает (я никогда не проверял это, просто первая мысль в моей голове:)

...