Я не уверен, относится ли это к конкретному 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 ... но все равно не повезло.