Предполагая, что вы не можете избежать использования runAllManagedModulesForAllRequests="true"
, как в ссылке Гектора, вы можете проверить тип обработчика запроса и установить заголовки кэширования, только если запрос обрабатывается MVC.
protected void Application_PreRequestHandlerExecute()
{
if ( HttpContext.Current.CurrentHandler is MvcHandler )
{
HttpContext.Current.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
HttpContext.Current.Response.Cache.SetValidUntilExpires(false);
HttpContext.Current.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
HttpContext.Current.Response.Cache.SetNoStore();
}
}
Обратите внимание, что я переместил код в Application_PreRequestHandlerExecute
, потому что обработчик еще не был выбран в BeginRequest
, поэтому HttpContext.Current.CurrentHandler
равно нулю.