【问题标题】:How to disable cache in asp.net?如何在 asp.net 中禁用缓存?
【发布时间】:2011-10-05 14:06:26
【问题描述】:

我正在使用 VB.NET 开发电子商务网站。用户登录购买一些产品,他们可以看到订单详情。 一旦他们登录,就会创建用户 ID 的会话并注销,所有会话都将被放弃。

我登录了网站,复制其中一个链接(例如订单详情)并退出。 当我运行链接时,页面仍然显示,即使会话被放弃。

如果我刷新页面,页面返回登录页面。

这对一些浏览器有影响。我已经测试过 IE,甚至是相同版本的 IE 8,其中一些人兑现了页面,o。

如何禁用缓存页面?

【问题讨论】:

标签: asp.net


【解决方案1】:

除了在注销时结束会话之外,您是否还告诉 .NET 身份验证结束?比如使用forms认证时,需要FormsAuthentication.SignOut();

【讨论】:

  • 意思是,我不认为缓存是你的问题。我认为问题在于用户的会话已经结束,但他们的身份验证令牌仍然存在,因此他们被允许进入页面。一旦页面尝试刷新并使用会话对象,它就会找不到会话,因此它会重定向到登录页面。
【解决方案2】:

听起来页面可能被浏览器缓存了。刷新页面告诉浏览器您不想看到缓存版本,而只是重新访问旧页面不会。

我不太愿意在这里提出一个完整的解决方案,因为听起来这对您来说可能是一个安全问题。您可以告诉浏览器您不希望它缓存页面,但可以很容易地让浏览器忽略这种指令。

【讨论】:

  • 谢谢,即使我更新了禁用 Cashe 的代码,它仍然无法正常工作。我认为浏览器只是忽略了这一点。它是相同版本的 IE 8,反应不同。
【解决方案3】:

试试这样的:

Response.Cache.SetCacheability(HttpCacheability.NoCache); 
Response.Cache.SetNoStore(); 

我认为你也可以这样做:

<meta http-equiv="Expires" CONTENT="0"> 
<meta http-equiv="Cache-Control" CONTENT="no-cache"> 
<meta http-equiv="Pragma" CONTENT="no-cache"> 

编辑

在详细阅读了您的问题之后,我认为您需要在基本页面或母版页面中添加一些逻辑来验证用户是否已通过身份验证,并将用户重定向到他们不是的登录页面。

【讨论】:

    猜你喜欢
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 2015-11-18
    • 2018-02-21
    • 2018-07-23
    相关资源
    最近更新 更多