3

情景

我有一个用 .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 没有信心。

我的两分钱

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

真正的问题

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

4

4 回答 4

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>
于 2013-09-19T14:07:44.620 回答
1

我设法找到了一个解决方案:基本上我将我的应用程序重新定位为在 Framework 4.0 下运行,而该应用程序仍使用 Framework 1.1 编译。

为了做到这一点,我关注了这个MSDN 页面。这是一段摘录:

您可以重新定位应用程序以在 .NET Framework 4 下运行。重新定位要求您向应用程序的配置文件中添加一个元素,使其能够在 .NET Framework 4 下运行。此类配置文件采用以下形式:

<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 中创建一个新的应用程序池,并将旧的 Framework 1.1 Web 应用程序配置为在新创建的池中与 Framework 4.0 一起运行

现在应用程序在 Framework 4.0 下运行,因此可以正确识别新浏览器并提供高级功能。

于 2014-01-22T15:53:37.600 回答
1

只需尝试为此配置 IIS -

在 IIS 中添加自定义 HTTP 响应标头

若要在 IIS 中的网站级别、文件夹级别或虚拟目录级别添加自定义 HTTP 响应标头,请按照您正在使用的 IIS 版本的步骤操作。

基于 Windows Server 2008 的 Web 服务器上的 IIS 7

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

IIS 6 及更早版本

  1. 单击开始,单击运行,在打开框中键入 inetmgr.exe,然后单击确定。
  2. 展开所需的服务器,然后展开网站。
  3. 右键单击所需的网站、文件夹或虚拟目录,然后单击“属性”。
  4. 在 HTTP 标头选项卡上,单击自定义 HTTP 标头下的添加。
  5. 在自定义标头名称框中,键入 X-UA-Compatible。
  6. 在自定义标头值框中,键入 IE=EmulateIE7。
  7. 单击确定两次。

有关更多详细信息,请参阅此链接

于 2013-10-15T13:01:32.227 回答
1

第一: X-UA-Compatible 标签必须是 <head> 部分中的第一个标签。

尝试使用允许 quirks 模式的 emulate 选项:

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

此外,众所周知,从页面中完全删除“DOCTYPE”有助于强制兼容模式或在顶部放置类似 xml 声明的内容

<?xml version="1.0" encoding="UTF-8">
于 2013-07-03T02:16:59.070 回答