如何在asp.net中禁用缓存?

时间:2011-10-05 14:06:26

标签: asp.net

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

我登录了该网站,复制了其中一个链接(例如订单详情)并注销了。 当我运行链接时,页面显示为eventhoug会话被放弃。

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

这使一些浏览器变得模糊。我已经测试了IE,甚至IE 8的同一版本,其中一些兑换了页面,o。

如何禁用缓存页面?

3 个答案:

答案 0 :(得分:2)

除了在注销时结束会话,您还告诉.NET身份验证结束吗?例如,使用表单身份验证时,您需要FormsAuthentication.SignOut();

答案 1 :(得分:0)

听起来好像页面可能会被浏览器缓存。刷新页面告诉浏览器您不希望以仅重新访问旧页面的方式查看缓存版本。

我在这里建议一个完整的解决方案犹豫不决,因为听起来这可能是一个安全问题。有些事情你可以告诉浏览器你更喜欢它不缓存页面,但浏览器可以很容易地忽略这种指令。

答案 2 :(得分:0)

尝试这样的事情:

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"> 

修改

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