2009-06-23 79 views
2

我们的(asp.net)系统是更大系统的一部分。它是通过这个更大的系统从javascript中启动的,它通过window.open调用来打开一个新窗口。IE7在一段时间后停止发出网络请求

(不谈,认证数据等通过一个加密的查询字符串参数传递到我们的系统中)

当IE7(遗憾的是该组织已经标准化了这一点),浏览器会使用我们的系统后(导航周围测试页面)一段时间(其间歇),开始不提出网络请求。按F5会导致它显示其加载动画,但实际上没有发生)。

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

这是有趣的事情,如果我启动提琴手,一切都开始正常工作。只要我关闭Fiddler,它就会停止发出网络请求。

该系统是一个相当html/javascript/ajax重系统(每页1MB +),但不应该导致浏览器这样做。很明显,Firefox和Chrome的工作完美:)

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

我禁用了代理服务器,启用它,几乎可以做任何我能想到的事情。

任何人有任何想法?

UPDATE

我设法与小提琴手运行重现它。最初,在工作时,我可以看到小提琴手的所有要求。当它进入“无需请求”模式时(再次注意,没有任何变化,我只是在浏览),我没有看到Fiddler中有任何东西(即没有新请求,没有任何东西)。所有提琴手记录的请求都已完成,因此没有打开的连接。

我们几乎在每台机器上都看到了这一点。浏览大约15页后,开始发生。这可能是一些环境问题吗?我的测试机器是安装有McAfee,IE7的vanilla XP。没有别的东西在运行,IE中没有安装工具栏。

回答

3

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

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

1

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

+0

不能有任何的javascript错误,因为页面还没有加载,当这种情况发生时(即我按F5或Ctrl + F5,并没有提出请求) – Gareth 2009-06-23 10:06:54

+0

好吧 - 我想接下来要做的是检查你有IE 7的最新更新。如果你有或不能做到这一点,然后去禁用任何IE插件。通常这些阻止IE正常工作。 – RichardOD 2009-06-23 10:51:53

1

你有自己的小提琴手自动代理设置设置。

当小提琴手启动时,它会修改IE的代理设置,以在小提琴手关闭时指向小提琴手,以恢复原始代理设置。

如果小提琴手看到现有的代理设置,它将使用它转发的请求中的代理设置。

在某些错误情况下,您可以不用提琴手继续运行,但仍然可以在IE设置中使用提琴手代理修改。您最终可能只能在Fiddler正在运行时才能使用IE。

重置IE的代理设置。

编辑

失败,最可能的原因是具有没有带尚未履行未完成的请求。有两个这些,并在默认的IE配置所有其他请求将无限期地等待未完成的请求。启动提琴手可以治愈这一段时间,因为请求不会直接传送到服务器。你可以用小提琴手运行重现问题吗?你有没有在提琴手中看到优秀的要求?

+0

感谢您的回复安东尼。我已经测试过所有这些(重置代理设置等)。甚至在我运行fiddler(并关闭代理设置)之前就会出现问题。 系统正在工作,然后当您使用它时,它突然停止。 – Gareth 2009-06-23 10:06:09

0

完成后请确保在HTTP标头中设置了connect: close