代码之家  ›  专栏  ›  技术社区  ›  Gareth

IE7在一段时间后停止发出网络请求

  •  2
  • Gareth  · 技术社区  · 16 年前

    我们的(ASP.NET)系统是更大系统的一部分。它通过这个更大的系统从执行window.open调用的javascript启动,以打开一个新窗口。

    (除此之外,身份验证数据等通过加密的查询字符串参数传入我们的系统)

    当使用IE7进行测试时(不幸的是,组织已经对此进行了标准化),浏览器将在使用我们的系统(在页面中导航)一段时间(其间歇性)后,开始不发出网络请求。按F5键会使其显示加载动画,但实际上不会发生任何情况)。

    您可以关闭我们的窗口,然后返回到更大的系统(在它自己的窗口中),它仍然可以正常工作。如果您重新启动我们的系统,新窗口将打开,看起来像是在加载,但没有发出任何请求(通过wireshark验证)。系统位于不同的子域上。

    有趣的是,如果我启动了小提琴手,一切都开始正常工作。我一关掉小提琴,它就停止发出网络请求。

    该系统是一个相当重的HTML/javascript/Ajax系统(每页1MB以上),但这不应该导致浏览器这样做。显然,火狐和Chrome工作得很好:)

    让它重新工作的唯一方法是关闭所有的IE窗口,然后重新启动。

    我已经禁用了代理服务器,启用了它,做了很多我能想到的事情。

    有人有什么想法吗?

    更新

    我设法用小提琴手演奏了一遍。最初,当它工作时,我可以在fiddler中看到所有的请求。当它进入“没有发出请求”模式时(同样,请注意,没有任何变化,我只是在四处浏览),我在fiddler中看不到任何东西(即没有新的请求,没有任何东西)。Fiddler记录的所有请求都已完成,因此没有打开的连接。

    我们几乎在每台机器上都能看到。在浏览了大约15页之后,这就开始发生了。可能是环境问题吗?我的测试机是一个普通的XP安装与McAfee,IE7。没有其他任何运行,IE中也没有安装工具栏。

    4 回复  |  直到 16 年前
        1
  •  3
  •   EricLaw    16 年前

    尝试合并 http://www.enhanceie.com/dl/fixHTTPMax.reg 达到HTTP连接限制,然后检查是否需要10倍的时间才能遇到问题。

    如果是这样,那么问题是您遇到了一个HTTP连接泄漏的问题,然后您最终达到了每个服务器的最大连接数限制。

        2
  •  1
  •   RichardOD    16 年前

    在IE中打开JavaScript调试并检查是否发生任何错误。

        3
  •  1
  •   AnthonyWJones    16 年前

    你的小提琴自动代理设置有点麻烦。

    当fiddler启动时,它将修改ie的代理设置以指向fiddler,当fiddler关闭时,它将恢复原始代理设置。

    如果fiddler看到现有的代理设置,它将使用请求中的代理设置进行转发。

    在某些错误情况下,您可以不运行任何小提琴手,但小提琴手代理修改仍在IE设置中。你可能会遇到这样一种情况,即只有小提琴手在跑的时候才工作。

    重置IE的代理设置。

    编辑

    如果不能做到这一点,最可能的原因是有尚未完成的未完成请求。其中有两个请求,在缺省的IE配置中,所有其他请求都将无限期地等待未完成的请求完成。激活fiddler可以解决这个问题一段时间,因为请求不会直接进入服务器。你能重现小提琴演奏时的问题吗?你看到小提琴手未完成的请求了吗?

        4
  •  0
  •   i_am_jorf    16 年前

    确保您的设置 connect: close 在HTTP头中。