就像问题说的那样,我想知道是否有可能关闭整个站点的所有 Controller 和操作上的缓存。谢谢!

最佳答案

创建一个全局 Action 过滤器并覆盖OnResultExecuting():

public class DisableCache : ActionFilterAttribute
{
    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
        filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false);
        filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
        filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
        filterContext.HttpContext.Response.Cache.SetNoStore();
    }
}

然后在您的global.asax中注册它,如下所示:
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new DisableCache());
    }

总之,这是创建一个Global Action Filter,以便隐式地将其应用于所有Controller和所有Action。

关于asp.net-mvc-3 - 如何关闭整个ASP.NET MVC 3网站的缓存?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9406003/

10-12 19:50