假设我在同一个ASP.NET C#WebSite上有两个页面。
我尝试以声明方式关闭缓存,尝试在我的重定向中使用true for endResponse ...似乎没有任何区别。
别介意大家!我是个白痴! 使用Visual Studio Dev Localhost,Redirect重定向到实时页面! :)
答案 0 :(得分:14)
页面执行的原因不会影响页面循环,在页面执行时会激活Load事件 。
因此,如果Page_Load有时不运行,那是因为页面已缓存且未在服务器上执行。该页面可以缓存在浏览器中,在路径中的某个路由器中,或者使用服务器端页面缓存在服务器上缓存。
如果您尚未为该页面启用服务器端页面缓存,则会将其缓存在浏览器或网络中。您可以使用缓存设置来尝试消除此问题:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
这将使页面在正常情况下不被缓存。 (还要检查您的浏览器是否处于脱机模式,然后它将使用缓存中的任何内容,无论其缓存设置如何。)
答案 1 :(得分:5)
答案 2 :(得分:2)
如果您正在重定向,则客户端可能会缓存响应。为了超越这个,您可以添加一个额外的查询参数,只需保留时间。
这通常足以超越大多数页面缓存机制。
答案 3 :(得分:1)
尝试使用Server.Transfer而不是Response.Redirect。
客户端不会看到网址更改,但这可能无关紧要,具体取决于您的要求
答案 4 :(得分:0)
我遇到了同样的问题,发现这适用于我:(在Page_Load部分添加此内容)
if (this.Master.Page.Header != null && Session["RELOAD"] == null)
{
System.Web.UI.HtmlControls.HtmlHead hh = this.Master.Page.Header;
System.Web.UI.HtmlControls.HtmlMeta hm = new System.Web.UI.HtmlControls.HtmlMeta();
hm.Attributes.Add("http-equiv", "Refresh");
hm.Attributes.Add("content", "3");
hh.Controls.Add(hm);
}
然后我在执行我想要运行的代码之后立即添加Session [“RELOAD”] =“1”以防止它一遍又一遍地刷新。像魅力一样。
答案 5 :(得分:0)
将VS从调试更改为发布模式对我有用....
答案 6 :(得分:0)
请运行以下代码以禁用firefox中的页面缓存。
Response.AppendHeader("Cache-Control", "no-store");
在母版页的页面加载中应用它。