Фильтр ответов ASP.NET MVC + атрибут OutputCache
Я не уверен, что это специфическая вещь для ASP.NET MVC или ASP.NET в целом, но вот что происходит. У меня есть фильтр действий, который удаляет пробелы с помощью фильтра ответов:
public class StripWhitespaceAttribute : ActionFilterAttribute
{
public StripWhitespaceAttribute ()
{
}
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
base.OnResultExecuted(filterContext);
filterContext.HttpContext.Response.Filter = new WhitespaceFilter(filterContext.HttpContext.Response.Filter);
}
}
Когда используется в сочетании с атрибутом OutputCache, мои вызовы Response.WriteSubstitution для «кэширования пончиковых отверстий» не работают. Первый и второй раз, когда страница загружает обратный вызов, переданный в WriteSubstitution, вызывается, после этого они больше не вызываются до истечения срока действия кэша вывода. Я заметил это не только с этим конкретным фильтром, но и с любым фильтром, используемым в Response.Filter ... я что-то упустил?
Я также забыл упомянуть, что пытался сделать это без использования атрибута фильтра действий MVC, прикрепив его к событию PostReleaseRequestState в global.asax и установив там значение Response.Filter ... но все равно не повезло.