在IE8下,Page_Init不会被调用



我们有一个站点,我们在其中响应重定向到一个页面(购物车页面(,由于某种原因,在使用IE8时,不会为该页面调用Page_Init和Page_Load函数。即使我将光标放在 URL 栏中并按回车键,他们仍然没有被调用。当我按 F5 时,它被调用。当我使用其他浏览器(包括IE8模式下的IE9(时,它们会被调用。我运行 Fiddler2 来检查流量,当我单击 URL 栏并按回车键时,即使您看到世界图标旋转并且它似乎在做 1/2 秒的事情,也不会发生流量。

什么可能导致此行为?似乎它必须是Javascript和/或拦截Page_Load的更新面板。

细节:该网站是AbleCommerce,页面是购物车页面。我们定制了产品选择流程。

我能够在站点的测试实例上复制该问题,因此我将断点添加到加载购物车的自定义控件的Page_Init和Page_Load函数中。在IE8下,我可以将光标放在IE8的url栏中并按回车键,断点永远不会被命中。任何其他浏览器,它们都会受到打击。在IE9浏览器模式下运行IE8,他们被击中。但是在IE8中,它们只有在我刷新(F5(时才会被击中。

我认为这一定是Javascript或更新面板的问题。Firefox 错误控制台或 IE8 中没有显示 Javascript 错误。

关于可能导致这种情况的原因的任何想法?或者我该如何进行故障排除?

尝试使用额外的参数调用您的页面,例如xyz始终新鲜的&_=xyz(例如当前时间字符串(。如果使用额外的参数刷新页面,则会遇到浏览器缓存过于激进的缓存问题。

为什么会这样 - 很难说。这可能是一个 jquery 问题,您在启用完全缓存的情况下调用 url,然后浏览器在内部选取缓存设置,并且从不回调您的页面。

当前接受的答案是调试此问题的好方法。但是这个问题的一个更好的解决方案是,你应该在响应上设置 HTTP 标头,以告诉浏览器它不应该缓存它。

查看此堆栈溢出问题的公认答案,了解如何以最流行的语言设置缓存标头:确保网页未在所有浏览器中缓存

我遇到了完全相同的问题...这是因为IE中的大量缓存选项。因此,我没有使用随机变量,而是将所有响应缓存设置为false en 每个回发,如下所示:

protected void Page_Load(object sender, EventArgs e)
{
        Response.Cache.SetNoStore();
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.Cache.SetExpires(DateTime.Now);
        Response.Cache.SetLastModified(DateTime.Now);
        Response.Cache.SetAllowResponseInBrowserHistory(false);
        ....
}

来源:Page_Load在Firefox中调用,但不是IE

最新更新