我们有一个应用程序(ASP.NET)在IE8上一直没有问题。应用程序在两台服务器上运行,一台主服务器和一台测试服务器。由于应用程序已稳定一段时间,因此两台服务器上的代码目前完全相同。
我们公司目前正在测试迁移到IE11。我们注意到在生产服务器上,IE11中没有显示某些页面。相反,它们会显示“此页面无法显示”的消息。但是,当我们指向测试服务器时,所有页面都正确显示。
我应该查看服务器,客户端或全局IE设置上的哪些可能的配置问题,以确定导致兼容性问题的原因?
答案 0 :(得分:2)
我将在这里猜测:生产服务器位于开放的互联网上,测试服务器隐藏在公司网络中。是吗?
如果是这种情况,则问题可能出在兼容模式(或缺少它)和浏览器设置上。
IE有一个配置设置(默认为打开),它告诉它对本地网络中的站点使用IE7兼容模式。
我的猜测是,由于您的网站在IE8中工作正常,它在IE7兼容模式下也能正常工作,因此可以在您本地网络中的测试服务器上正常工作。
但是,您的实时服务器位于开放的Internet上,因此IE不使用该配置设置,并尝试以IE11标准模式呈现页面。由于您的网站是在IE8中编写的,因此它可能存在错误或问题导致它在IE11这样的新浏览器中呈现错误,这就是您所看到的。
如果诊断正确,那么您有两种选择:
修复错误,并将网站设置为使用IE11标准模式。
保留错误并将网站设置为使用兼容模式。
在任何一种情况下,您都希望使用X-UA-Compatible
元标记或http标头。
在元标记表单中,如下所示:
<meta http-equiv="X-UA-Compatible" content="IE=8" />
...将其设置为IE8兼容模式。
要将其设置为IE11模式,请在上面的行中使用IE=edge
代替IE-8
。
此行需要在您网站的每个网页上添加到HTML代码的<head>
部分。它也可以添加为http标头。如果你不能改变html代码,这可能是一个更好的选择,但是如何做的具体细节将取决于你的网络服务器,所以如果你想采取这条路线,我会让你自己研究。
请注意,将其设置为使用兼容模式显然是更快的选项,因为您不必对代码进行任何其他更改。但请注意,导致它在IE11中断的错误也会在其他浏览器中破坏它,包括Microsoft的Edge浏览器,它是Windows 10中IE的替代品。换句话说,你将拥有迟早要修复这些错误。