3

场景兼容性问题与Internet Explorer 10/11和一个旧的.NET Framework 1.1的网站

我在.NET(1.1框架)开发的一个很老的网站。该网站在Internet Explorer 10/11中有几个问题可以使用兼容性视图进行修复。

的问题

问题是,框架1.1不能识别的Internet Explorer 10/11作为先进能力的浏览器,使大量的功能(例如JavaScript代码)被禁用时与网际用户Explorer 10/11访问该网站。

微软发布补丁来修复这个问题对于.NET Framework版本> = 2.0而不是1.1的框架。

我已经尝试过

  1. 我试图迫使IE7兼容模式在web.config中或添加HTTP标头在IIS或直接的html页面里面有:

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

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

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

我的两分钱

我知道,可能是最好的解决办法是在整个项目转换为框架(> = 2.0)的新版本,遗憾的是该项目是巨大的,其转换将是非常复杂的(该解决方案包括了很多其他项目的,旧的传统的ASP部分,水晶报表报表等...)

真正的问题

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

+2

不知道它是否会工作,但IE10的appBrowsers文件解决了链接按钮之类的问题,可能会增加工作量,如果您的项目可以采用它。 http://fkauffmann.blogspot.ie/2012/01/aspnet-fails-to-detect-ie10-causing.html –

+1

如果'appBrowsers'的东西不起作用,你可能想看看'browserCaps': [来自MSDN](http://msdn.microsoft.com/en-us/library/sk9az15a(v = vs.71).aspx) –

+4

该项目是8岁,尚未更新?我意识到这是一个复杂的项目来更新,但它不像它已被废弃_yesterday _... –

回答

1

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

为了实现这个功能,我遵循了this MSDN页面。以下是摘录:

您可以将应用程序重定向到在.NET Framework 4下运行。重定目标要求添加到应用程序的配置文件中的元素,允许它在.NET Framework上运行4,这样的配置文件的形式如下:

<configuration> 
    <startup> 
     <supportedRuntime version="v4.0"/> 
    </startup> 
</configuration> 

所以我的问题是,在2个步骤来解决:

  1. 添加本节进行到Framework 1.1的Web应用程序的web.config文件:

    <configuration> 
        <startup> 
         <supportedRuntime version="v4.0"/> 
        </startup> 
    </configuration> 
    
  2. 在IIS中创建一个新的应用程序池,并配置旧Framework 1.1的Web应用程序在新创建的池

与框架4.0运行现在,应用程序框架4.0下运行,因此新的浏览器正确识别和先进的功能都可用。

1

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

尝试使用模拟选项,它允许怪癖模式:

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

而且,完全删除“DOCTYPE”从你的网页也已经知道帮助力的兼容性模式或将像一个XML声明在顶部

<?xml version="1.0" encoding="UTF-8"> 
2

编辑网页。配置文件,并在<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.1应用程序。不需要重新编译。 – Sheepy

+0

在我的.Net 2.0项目中不起作用 –

1

只是尝试配置IIS,此 -

添加自定义HTTP响应头在IIS

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

基于Windows Server 2008的Web服务器

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

IIS

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

更多细节请参阅本link