ASP.NET网页过期缓存问题

ASP.NET网页过期缓存问题,asp.net,caching,cache-control,Asp.net,Caching,Cache Control,我似乎有问题,找不到解决方案……我有一个ASP.NET搜索表单,当用户单击结果,然后单击浏览器上的“后退”按钮时,用户将被引导到一个页面,该页面显示“网页已过期” 我知道这是缓存问题,这是我尝试过的 protected void Page_Init(object sender, EventArgs e) { Response.AppendHeader("Cache-Control", "no-cache"); } 及 这些解决方案似乎都不起作用,有人知道为什么吗 我也试过这个 Res

我似乎有问题,找不到解决方案……我有一个ASP.NET搜索表单,当用户单击结果,然后单击浏览器上的“后退”按钮时,用户将被引导到一个页面,该页面显示“网页已过期”

我知道这是缓存问题,这是我尝试过的

protected void Page_Init(object sender, EventArgs e)
{
    Response.AppendHeader("Cache-Control", "no-cache"); 
}

这些解决方案似乎都不起作用,有人知道为什么吗

我也试过这个

Response.Cache.SetExpires(DateTime.Now.AddMinutes(-1));
但它不起作用

我做了更多的挖掘,我用Fiddler检查了我的标题,上面写着缓存控制:private,no store,必须重新验证我没有在任何地方将缓存控制设置为private…我所有的都是导入,有可能我的导入中有一个缓存控制吗

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

using CMS.UIControls;
using CMS.GlobalHelper;
using CMS.CMSHelper;
using CMS.Controls;
问题 此问题与缓存控制标头无关。对于包含和不包含缓存头的搜索结果页面,您会看到类似的错误

这里的问题是您的搜索表单是通过Http POST提交的。这意味着搜索字段将作为帖子正文的一部分提交到服务器。浏览器将其视为表单提交,而将其视为联系人页面提交。浏览器内置了一种机制来防止多次重新发布同一表单,因为没有经验的用户可能会在不知情的情况下意外地这样做

例如,假设您有一个联系人表单,该表单向您发送了一封公司电子邮件。用户可能会通过发布表单向您发送消息,然后单击“后退”、“转发”、“后退”、“转发”、“后退”、“转发”,您不希望收到同一消息的3或4份副本。因此,当您导航回表单发布的结果页面时,浏览器会发出警告。某些浏览器允许您单击“再次提交”,但这是不可取的

解决方案 好的,那么答案是什么?您需要通过Http GET方法提交搜索查询。这通常会导致搜索字符串出现在搜索结果页面的查询字符串中。例如,在大多数情况下,谷歌在querystring变量“q”中对搜索字符串进行编码。您可能有一个类似“SearchResults.aspx?q=Test%20Phrase”的页面。请注意,搜索短语作为页面URL的一部分提供在querystring中,而不是在帖子正文中

有关如何在ASP.net的以后为中心的做事方式中实现这一点的更多信息,请查看。@Solburn提供的例子是这篇文章中最好的例子。

问题 此问题与缓存控制标头无关。对于包含和不包含缓存头的搜索结果页面,您会看到类似的错误

这里的问题是您的搜索表单是通过Http POST提交的。这意味着搜索字段将作为帖子正文的一部分提交到服务器。浏览器将其视为表单提交,而将其视为联系人页面提交。浏览器内置了一种机制来防止多次重新发布同一表单,因为没有经验的用户可能会在不知情的情况下意外地这样做

例如,假设您有一个联系人表单,该表单向您发送了一封公司电子邮件。用户可能会通过发布表单向您发送消息,然后单击“后退”、“转发”、“后退”、“转发”、“后退”、“转发”,您不希望收到同一消息的3或4份副本。因此,当您导航回表单发布的结果页面时,浏览器会发出警告。某些浏览器允许您单击“再次提交”,但这是不可取的

解决方案 好的,那么答案是什么?您需要通过Http GET方法提交搜索查询。这通常会导致搜索字符串出现在搜索结果页面的查询字符串中。例如,在大多数情况下,谷歌在querystring变量“q”中对搜索字符串进行编码。您可能有一个类似“SearchResults.aspx?q=Test%20Phrase”的页面。请注意,搜索短语作为页面URL的一部分提供在querystring中,而不是在帖子正文中


有关如何在ASP.net的以后为中心的做事方式中实现这一点的更多信息,请查看。@Solburn提供的例子是这篇文章中最好的例子。

本斯韦恩已经完美地回答了这个问题。 除此之外。 这是使用.Net的ImageButton控件时常见的问题 例如

所以为了避免这个问题。使用下面的代码

<a href="~/home.aspx"><img src="test.jpg" /> </a>


本斯韦恩已经完美地回答了这个问题。 除此之外。 这是使用.Net的ImageButton控件时常见的问题 例如

所以为了避免这个问题。使用下面的代码

<a href="~/home.aspx"><img src="test.jpg" /> </a>


搜索结果是否是帖子的结果?可能重复的搜索结果是否是帖子的结果?可能重复的
<a href="~/home.aspx"><img src="test.jpg" /> </a>
<asp:HyperLink ID="lnkDisplayImage" runat="server" NavigateUrl="~/home.aspx" > <asp:Image ID="imgDisplayImage" runat="server" ImageUrl="test.jpg" /> </asp:HyperLink>