Internet Explorer 10/11和旧的.net framework 1.1网站的兼容性问题

时间:2013-06-25 15:58:12

标签: asp.net internet-explorer internet-explorer-10 internet-explorer-11 asp.net-1.1

情景

我在.net(框架1.1)中开发了一个非常古老的网站。该站点有几个问题可以使用兼容性视图修复Internet Explorer 10/11。

问题

问题是框架1.1无法将Internet Explorer 10/11识别为高级功能浏览器,因此当具有Internet Explorer 10/11的用户访问该网站时,许多功能(例如javascript代码)将被禁用。

Microsoft发布了针对.net框架版本> = 2.0修复此问题的修补程序,但未针对框架1.1修复此问题。

我已尝试过的内容

  1. 我尝试在web.config中强制使用IE7兼容模式,或者在IIS中直接添加HTTP标头,或者直接在html页面中添加:

    <meta http-equiv="X-UA-Compatible" content="IE=7" />
    

    但这不是一个有效的解决方案,因为由于1.1框架问题,javascript代码仍然缺失。

  2. 我发现唯一可行的解​​决方案是在浏览器中手动设置兼容性视图,但我的一些客户在激活兼容性视图时遇到问题,因为他们对PC没有信心。

  3. 我的两分钱

    我知道可能最好的解决方案是将整个项目转换为更新版本的框架(&gt; = 2.0),不幸的是项目很庞大,转换非常复杂(解决方案包括很多其他项目,较旧的经典ASP部分,Crystal Reports报告等......)

    真正的问题

    是否有解决方案不需要项目转换或最终用户的手动操作?

4 个答案:

答案 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

  1. 启动IIS管理器。为此,请单击“开始”,单击“运行”,键入inetmgr, 然后单击“确定”。
  2. 在“连接”下,双击所需的服务器,然后双击 双击“站点”。
  3. 单击您所在的网站,文件夹或虚拟目录 想要添加自定义HTTP响应标头。
  4. 在“主页”下,双击“HTTP响应标头” IIS部分。注意占位符是指 网站名称。
  5. 在“操作”下,单击“添加”。
  6. 在“名称”框中,键入X-UA-Compatible。
  7. 在“值”框中,键入IE = EmulateIE7。
  8. 单击“确定”。
  9. IIS 6及更早版本

    1. 单击“开始”,单击“运行”,在“打开”框中键入inetmgr.exe,然后单击“确定” 单击“确定”。
    2. 展开所需的服务器,然后展开“网站”。
    3. 右键单击该网站,文件夹或虚拟目录 你想要的,然后单击属性。
    4. 在“HTTP标头”选项卡上,单击“自定义HTTP标头”下的“添加”。
    5. 在“自定义标题名称”框中,键入X-UA-Compatible。
    6. 在“自定义标头”值框中,键入IE = EmulateIE7。
    7. 单击“确定”两次。
    8. 有关详细信息,请参阅此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>

所以我的问题分两步解决:

  1. 将此部分添加到Framework 1.1 Web应用程序的web.config文件中:

    <configuration> 
       <startup>
          <supportedRuntime version="v4.0"/>
       </startup>
    </configuration>
    
  2. IIS中的
  3. 创建一个新的应用程序池,并将旧的Framework 1.1 Web应用程序配置为在新创建的池中与Framework 4.0一起运行
  4. 现在,应用程序在Framework 4.0下运行,因此可以正确识别新浏览器并提供高级功能。