【问题标题】:ASP.NET MVC 1 Page Caching ProblemASP.NET MVC 1 页面缓存问题
【发布时间】:2011-05-12 20:38:24
【问题描述】:

在我的网站上有一个页面,用户可以在其中查看他们需要进行的所有付款的列表,选择一个文件并进行付款。我遇到的问题是,如果用户在文件上付款,然后在付款网格页面的 URL 中键入缓存页面,仍然显示已付款的文件,允许用户提交第二次付款。我想要做的是始终通过控制器,因此如果用户输入此 URL,他们将重新生成模型并且此文件将不再出现。有没有办法关闭某个页面的缓存?关于如何解决这个问题的任何想法?

【问题讨论】:

    标签: asp.net-mvc caching routes browser-cache


    【解决方案1】:

    您可以创建自定义操作过滤器来设置正确的响应标头,以指示浏览器不要缓存页面结果:

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

    然后用这个属性装饰控制器动作:

    [DisableCache]
    public ActionResult PerformPayment()
    {
       ...
    }
    

    【讨论】:

    • 谢谢,这正是我所需要的,而且效果很好。感谢您的帮助。
    猜你喜欢
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    相关资源
    最近更新 更多