3

Сценарийпроблемы совместимости с Internet Explorer 10/11 и старый .NET Framework 1.1 Сайт

У меня есть очень старый сайт, разработанный в .net (рамки 1.1). На сайте есть несколько проблем с Internet Explorer 10/11, которые могут быть исправлены с использованием представления совместимости.

Проблема

Проблемы заключается в том, что структура 1.1 не распознает Internet Explorer 10/11 как передовые возможности браузера, так много возможностей (например, яваскрипт код) отключается, когда пользователь с доступом в Интернете Explorer 10/11 обращается к веб-сайту.

Microsoft выпустила исправления для исправления этой проблемы для версий .net framework> = 2.0, но не для фреймворка 1.1.

То, что я уже пытался

  1. Я пытался форсирование режим совместимости IE7 в web.config или добавления заголовка HTTP в IIS или непосредственно внутри HTML-страниц с:

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

    , но это не является допустимым решением, поскольку код javascript по-прежнему отсутствует из-за проблемы с базой 1.1.

  2. Единственное работающее решение, которое я нашел, это вручную установить представление совместимости в браузере, но некоторые из моих клиентов не могут активировать представление совместимости, так как они не имеют доверия с ПК.

Мои два цента

Я знаю, что, вероятно, лучшим решением было бы преобразовать весь проект в новой версии базы (> = 2.0), к сожалению, проект огромен и его преобразование было бы очень сложным (решение включает в себя много других проектов, старые классические разделы ASP, Crystal Reports отчеты и так далее ...)

реальный вопрос

Есть ли решение, которое не требует преобразования проекта или ручных операций от конечного пользователя?

+2

Не уверен, что это сработает, но есть файл appBrowsers для IE10, который исправляет проблемы с помощью кнопок со ссылками и т. П., Возможно, это будет работать, добавив, что если ваш проект может его принять. 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

мне удалось найти решение: в основном я нацелить мое приложение для запуска под Framework 4.0, пока приложение еще скомпилирован с Framework 1.1.

Для этого я последовал за страницей this MSDN. Вот выдержка:

Вы можете перенастроить приложение для работы под .NET Framework 4.Ретаргетинг требует, чтобы добавить элемент в файл конфигурации приложения, что позволяет ему работать под .NET Framework 4. Такой файл конфигурации имеет следующий вид:

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

Так что моя задача решается в 2 этапа:

  1. добавить этот раздел в файле web.config 1.1 веб-приложения Framework:

    <configuration> 
        <startup> 
         <supportedRuntime version="v4.0"/> 
        </startup> 
    </configuration> 
    
  2. в IIS создать новый пул приложений и настроить старое веб-приложение Framework 1.1 для работы с Framework 4.0 во вновь создаваемом пуле

Теперь приложение работает под управлением Framework 4.0, поэтому новые браузеры правильно распознаются и доступны расширенные функции.

1

Первый: тег X-UA-совместимый должен быть самым первым тегом в разделе головы <.

Попробуйте использовать опцию эмулировать, что позволяет режим совместимости:

<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.

IIS 7 на базе Windows Server 2008 Web-сервер

  1. Запустите диспетчер IIS. Для этого нажмите кнопку Пуск, выберите пункт Выполнить, введите inetmgr, и нажмите кнопку ОК.
  2. В разделе «Подключения» дважды щелкните нужный сервер, а затем дважды щелкните узел «Сайты».
  3. Щелкните по веб-сайту, папке или виртуальному каталогу, где вы хотите добавить пользовательский заголовок ответа HTTP.
  4. В разделе «Домой» дважды щелкните заголовки ответов HTTP в разделе раздела IIS. Примечание. Заполнитель ссылается на имя сайта .
  5. В разделе «Действия» нажмите «Добавить».
  6. В поле «Имя» введите X-UA-Compatible.
  7. В поле Значение введите IE = EmulateIE7.
  8. Нажмите OK.

IIS 6 и более ранних версий

  1. Нажмите кнопку Пуск, выберите пункт Выполнить, введите inetmgr.exe в поле Открыть, а затем нажмите кнопку ОК .
  2. Разверните сервер, который вы хотите, а затем разверните веб-узлы.
  3. Щелкните правой кнопкой мыши веб-сайт, папку или виртуальный каталог, который требуется , а затем нажмите кнопку Свойства.
  4. На вкладке «Заголовки HTTP» нажмите «Добавить в пользовательских HTTP-заголовках».
  5. В поле Имя пользовательского заголовка введите X-UA-Compatible.
  6. В поле ввода пользовательского заголовка введите IE = EmulateIE7.
  7. Дважды нажмите кнопку ОК.

более подробно смотрите этот link

 Смежные вопросы

  • Нет связанных вопросов^_^