在IE8下,没有调用Page_Init

时间:2012-05-04 23:17:39

标签: javascript asp.net internet-explorer asp.net-ajax

我们有一个站点,我们Response.Redirect到一个页面(购物车页面),由于某种原因,使用IE8时没有为该页面调用Page_Init和Page_Load函数。即使我将光标放在URL栏中并按Enter键,它们仍然没有被调用。当我点击F5时,它会被调用。当我使用另一个浏览器(包括IE8模式下的IE9)时,它们会被调用。我运行Fiddler2检查流量,当我点击URL栏并点击回车时没有流量,即使你看到世界图标旋转,它似乎做了1/2秒的事情。

什么可能导致这种行为?好像它必须是Javascript和/或一个拦截Page_Load的更新面板。

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

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

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

有关可能导致此问题的任何想法?或者我如何解决它?

3 个答案:

答案 0 :(得分:1)

尝试使用额外参数调用您的页面,例如&_=xyz xyz总是新鲜的(如当前时间串)。如果使用额外参数刷新页面,则会出现缓存问题,即浏览器缓存过于激烈。

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

答案 1 :(得分:1)

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

查看此Stack Overflow问题的已接受答案,了解如何使用大多数流行语言设置缓存标头: Making sure a web page is not cached, across all browsers

答案 2 :(得分:0)

我遇到了同样的问题...这是因为IE中的重要caché选项。因此,我不是使用随机变量,而是将所有响应缓存设置为false,每次回发都是这样的:

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 called in Firefox, but not IE