【问题标题】:Logout - How to clear cache , asp.NET注销 - 如何清除缓存,asp.NET
【发布时间】:2011-08-25 12:08:57
【问题描述】:

我正在使用 C# 开发一个 asp.NET 4.0 Web 应用程序。我目前正在使用会话进行身份验证,并且在注销时我正在清除会话。但是有一个问题,当用户按下返回时,他仍然能够看到缓存的页面。我想禁用此类页面的缓存,或确保已对其进行检查。

这样做的最佳方法是什么?如果我将服务器设置为不存储缓存信息,这会影响所有应用程序还是只会影响我的应用程序?

【问题讨论】:

    标签: c# asp.net visual-studio-2010


    【解决方案1】:

    将此添加到page_load

    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    

    这是唯一正确的答案,尽管重要的是要知道它只是对浏览器的请求以停止缓存 - 它不一定必须遵循。

    这需要包含在您不希望用户“返回按钮”到的每个页面上。

    【讨论】:

    • @m.edmondson;感谢您编辑和添加正确的描述。
    • 它也不会阻止用户按下并查看他们刚刚查看的页面。这就是浏览器的工作方式。
    • 这是在某些浏览器中使用返回按钮时出现“此页面已过期”行为的方式吗?
    • 身份验证cookie或会话cookie在调用FormsAuthentication.SignOut()后没有完全清除;会话.Abandon();请参阅有关如何以编程方式使这些 cookie 过期的已接受答案:stackoverflow.com/a/1306932/463478
    【解决方案2】:

    您可以在母版页的 Page_Init 中添加以下行

    protected void Page_Init(object sender, EventArgs e)
        {
            Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
            Response.Cache.SetCacheability(HttpCacheability.NoCache);
            Response.Cache.SetNoStore();
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多