2

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

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

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

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

有趣的是,如果我启动 Fiddler,一切都会开始正常工作。一旦我关闭 Fiddler,它就会停止发出网络请求。

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

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

我已经禁用了代理服务器,启用了它,几乎完成了我能想到的所有事情。

有人有什么想法吗?

更新

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

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

4

4 回答 4

3

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

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

于 2009-06-26T04:23:51.140 回答
1

在 IE 中打开 JavaScript 调试并检查出现的任何错误。

于 2009-06-23T09:58:24.500 回答
1

提琴手自动代理设置让您陷入了困境。

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

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

在某些错误情况下,您可能没有运行提琴手,但提琴手代理修改仍然存在于 IE 设置中。您最终可能会遇到 IE 仅在 Fiddler 运行时才有效的情况。

重置 IE 的代理设置。

编辑

失败最可能的原因是有尚未完成的未完成请求。拥有其中两个,在默认的 IE 配置中,所有其他请求将无限期地等待未完成的请求完成。启动 fiddler 可以暂时解决这个问题,因为请求不会直接发送到服务器。你能重现提琴手运行的问题吗?您在提琴手中看到未完成的请求吗?

于 2009-06-23T10:00:19.363 回答
0

Make sure your setting connect: close in the HTTP header when you're done.

于 2009-06-26T04:36:38.797 回答