情景
我在.net(框架1.1)中开发了一个非常古老的网站。该站点有几个问题可以使用兼容性视图修复Internet Explorer 10/11。
问题
问题是框架1.1无法将Internet Explorer 10/11识别为高级功能浏览器,因此当具有Internet Explorer 10/11的用户访问该网站时,许多功能(例如javascript代码)将被禁用。
Microsoft发布了针对.net框架版本> = 2.0修复此问题的修补程序,但未针对框架1.1修复此问题。
我已尝试过的内容
我尝试在web.config中强制使用IE7兼容模式,或者在IIS中直接添加HTTP标头,或者直接在html页面中添加:
<meta http-equiv="X-UA-Compatible" content="IE=7" />
但这不是一个有效的解决方案,因为由于1.1框架问题,javascript代码仍然缺失。
我发现唯一可行的解决方案是在浏览器中手动设置兼容性视图,但我的一些客户在激活兼容性视图时遇到问题,因为他们对PC没有信心。
我的两分钱
我知道可能最好的解决方案是将整个项目转换为更新版本的框架(&gt; = 2.0),不幸的是项目很庞大,转换非常复杂(解决方案包括很多其他项目,较旧的经典ASP部分,Crystal Reports报告等......)
真正的问题
是否有解决方案不需要项目转换或最终用户的手动操作?
答案 0 :(得分:2)
编辑web.config文件并在<system.web>
部分添加
<browserCaps>
<case match="IE[ /](?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*))">
browser=IE
version=${version}
majorversion=${major}
minorversion=${minor}
frames=true
tables=true
cookies=true
javascript=true
javaapplets=true
activexcontrols=true
ecmascriptversion=1.5
vbscript=true
backgroundsounds=true
isMobileDevice="true"
<filter match="[4-9]" with="${major}">
ecmascriptversion=1.3
css1=true
css2=true
xml=true
<filter match="[5-9]" with="${major}">
w3cdomversion=1.0
</filter>
</filter>
<filter match="^b" with="${letters}">
beta=true
</filter>
</case></browserCaps>
答案 1 :(得分:1)
首先:X-UA兼容标签必须是&lt;&lt;头&gt;部分。
尝试使用模拟选项,它允许怪癖模式:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
此外,还知道从页面中完全删除“DOCTYPE”有助于强制兼容模式或在顶部放置类似xml声明的内容
<?xml version="1.0" encoding="UTF-8">
答案 2 :(得分:1)
尝试为此配置IIS -
在IIS中添加自定义HTTP响应标头
要在网站级别,文件夹级别或IIS中的虚拟目录级别添加自定义HTTP响应标头,请按照所使用的IIS版本的步骤进行操作。
基于Windows Server 2008的Web服务器上的IIS 7
IIS 6及更早版本
有关详细信息,请参阅此link
答案 3 :(得分:1)
我设法找到了一个解决方案:基本上我重新定位我的应用程序在Framework 4.0下运行,而应用程序仍然使用Framework 1.1进行编译。
为了实现这一点,我按照this MSDN页面进行了操作。这是一段摘录:
您可以重新定位应用程序以在.NET Framework 4下运行。重定向要求您向应用程序的配置文件添加一个元素,使其能够在.NET Framework 4下运行。这样的配置文件采用以下形式: p>
<configuration>
<startup>
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
所以我的问题分两步解决:
将此部分添加到Framework 1.1 Web应用程序的web.config文件中:
<configuration>
<startup>
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
现在,应用程序在Framework 4.0下运行,因此可以正确识别新浏览器并提供高级功能。