ERR_CACHE_MISS 导航回 ASPX 页面时

ERR_CACHE_MISS when navigating back to an ASPX page

我有一个 WebForms 应用程序,其中第一页基本上是一个网格,其中包含指向加载 PDF 查看器的第二页的链接。网格实际上位于 .ascx 控件中。从第一页到 PDF 查看器页面,一切正常。但是,当我点击后退按钮 return 到第一页时。我收到以下错误(在 Chrome 中,但在其他浏览器中也会发生):

如果我单击后退按钮,浏览器 return 会转到第一页,一切正常,但我需要解决此错误。

我已经尝试根据 this Whosebug answer 的建议在第一页中禁用缓存,如下所示:

Response.AppendHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.0.
Response.AppendHeader("Expires", "0"); // Proxies.

我也试过这个:

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Response.Cache.SetExpires(DateTime.MinValue);

我已将此代码放在.aspx 页面的代码后面和.ascx 控件中(在OnInit 方法中),但都无济于事。我在这里错过了什么?

正如@JJS 所暗示的那样,听起来您正在使用 OnClick(可能通过 LinkBut​​ton 或 ImageButton),这会导致 partial/full post返回并且您的重定向发生在代码隐藏中。如果这是正确的,是否有您不使用超链接的原因?

缓存处理不是解决办法。浏览器显示页面之间发生 post。

覆盖 OnPreInit 方法并在 Response 对象上设置各种与缓存相关的属性,以防止浏览器缓存页面。

protected override void OnPreInit(EventArgs e)
{
    base.OnPreInit(e);

    Response.Buffer = true;
    Response.ExpiresAbsolute = DateTime.Now.AddDays(-1d);
    Response.Expires = -1500;
    Response.CacheControl = "no-cache";
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
}

您可以执行类似禁用浏览器页面缓存的操作,如下所示:

   Response.Cache.SetCacheability(HttpCacheability.NoCache);
   Response.Cache.SetExpires(Now.AddSeconds(-1));
   Response.Cache.SetNoStore();
   Response.AppendHeader("Pragma", "no-cache");