我们有一个以 ASP.NET 网站形式编写的产品,已部署在 70 多个站点。
最近,某个网站报告了一个问题,IE8/9 浏览器会在某些回发点挂起,需要关闭浏览器才能重新工作(看起来好像需要很长时间才能加载,但刷新页面,甚至在地址栏中输入来自其他网站的 URL 都不起作用)。
完全相同的网站用Chrome/Firefox都没有问题,我用Fiddler2作为中间代理,想看看能不能查出原因,结果一运行,问题就没了。
更糟糕的是,一些运行 IE8/9 的机器没有出现问题。深入分析变化后发现:1. 网站已超过一个月没有更新 2. Windows 机器是集中更新的,在问题出现之前没有更新 3. 出现问题的机器似乎运行的是旧版本的 Java Runtime,因为更新被阻止或失败了。
当受影响的机器上的 JRE 更新后,问题就解决了。客户现在正试图进行风险分析,并找出发生了什么,但我却不知所措,因为我们的应用程序不以任何形式使用 JAVA,所以我不明白为什么 JRE 更新会影响它的运行。此外,这个问题没有出现在我们的任何其他站点,或者至少还没有出现过。它实际上是在一夜之间发生的——星期三一切都正常,星期四就坏了。
我们的产品使用了许多组件,一些是开源的,一些是商业的,我认为它们都不需要 JAVA:Infragistics Web Controls 12.1 AjaxControlToolkit 4.1 jQuery 1.8.2 jQuery UI 1.8.16 jQuery Validate 1.9
以及许多小型 jQuery 插件:plupload、cookie、hoverIntent、maskedinput、placeholder、potato.menu
如果有人能帮助我解释为什么事情突然停止工作,以及 Java 运行时更新如何修复不使用 JAVA 的站点,我将不胜感激。
答案1
上周,在 2014 年 3 月 11 日 Windows 更新后,我遇到了同样的问题。我的网站是运行 SSL 的 ASP.net Web 表单,页面突然开始挂起,没有响应。关闭浏览器可以解决这个问题,但重试后很快就会恢复。更新 Java 引擎对我来说不起作用,当我使用 Fiddler 时,问题消失了,网站运行正常。
问题出在 http 和 https 之间的混合内容。主页中有一个 iframe,其源是根据用户的请求动态设置的,但是,当未设置 iframe 时,src 的默认值为“/”,指向网站的根目录。在生产服务器上,对根目录的请求被重定向到另一个网站,该网站是非 SSL 的。这导致 IE 中出现混合内容的情况,并且 IE 不会向用户显示允许混合内容的提示,它会工作一两次然后挂起。
我将 iframe 的默认 src 更改为站点内的特定页面,一切开始正常工作。
我的建议是确保您的网站上没有混合内容。