2011-10-05 52 views
0

我正在使用VB.NET在电子商务网站上工作。用户登录购买一些产品,他们可以看到订单的详细信息。 登录后,用户ID会话被创建并注销,所有会话都被放弃。如何在asp.net中禁用缓存?

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

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

这个嗜好一些浏览器。我已经测试过IE,即使是同一个版本的IE 8,其中一些兑现了页面o。

如何禁用缓存页面?

+0

请参阅http://forums.asp.net/t/1268449.aspx/1 –

回答

2

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

+0

含义,我不认为缓存是你的问题。我认为问题在于用户的会话已结束,但他们的身份验证令牌仍然存在,因此他们被允许进入页面。一旦页面尝试刷新并使用会话对象,那么它将找不到会话,因此它会重定向到登录页面。 –

0

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

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

+0

谢谢,即使我更新禁用cashe的代码,它仍然不起作用。我认为浏览器只是忽略这一点。它是IE 8的相同版本,反应不同。 – jeeunit02

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

编辑

阅读更进了你的问题,我想你需要在基本页面或母版页中添加一些逻辑来验证用户是否已通过身份验证,并将用户重定向到登录页面不是。

+0

感谢代码不起作用。 – jeeunit02