如何在用户使用c#注销asp.net时清除浏览器缓存?

如何在用户使用c#注销asp.net时清除浏览器缓存?,c#,asp.net,cache-control,C#,Asp.net,Cache Control,在asp.net中是新的。在我的asp.net应用程序中,在的成员身份中,使用函数ClearSession()在单击事件时注销,但注销后,如果我单击浏览器上的“上一步”按钮,会出现问题,它将转发到缓存页面。如何清除浏览器中的缓存,以便用户在未登录时无法查看其配置文件 protected void ClearSession() { FormsAuthentication.SignOut(); Session.Clear(); Response.Cache.SetCachea

在asp.net中是新的。在我的asp.net应用程序中,在
的成员身份中,使用函数
ClearSession()
在单击事件时注销
,但注销后,如果我单击浏览器上的“上一步”按钮,会出现问题,它将转发到缓存页面。如何清除浏览器中的缓存,以便用户在未登录时无法查看其配置文件

protected void ClearSession()
{
    FormsAuthentication.SignOut();
    Session.Clear();
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.ExpiresAbsolute = DateTime.UtcNow.AddDays(-1d);
    Response.Expires = -1500;
    Response.CacheControl = "no-Cache";
}

我想你就快到了。您需要更多的HTML标题来支持所有浏览器。根据这些标准,它们适用于所有浏览器:

Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
这方面的完整代码是:

HttpContext.Current.Response.AddHeader("Cache-Control", "no-cache, no-store, must-revalidate");
HttpContext.Current.Response.AddHeader("Pragma", "no-cache");
HttpContext.Current.Response.AddHeader("Expires", "0");
这些标题仅适用于并非所有web应用程序都包含这些标题的页面,因此您应该向所有页面添加包含此标题的过滤器,或者您可以禁用“后退”按钮。

请注意,您不能从页面客户端的任一服务器“清除浏览器缓存”,也不能配置浏览器的行为(你可以向浏览器建议缓存,但不能强制)。所以,如果你担心页面停留在用户的机器上,你真的很倒霉。可能是重复的
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Pragma", "no-cache"); 
response.setDateHeader("Expires", 0);