IE 9 иногда отображает Red X вместо элемента управления .NET Forms, работает в IE 8 - PullRequest
1 голос
/ 21 марта 2012

Я работаю с веб-приложением, которое использует пользовательский элемент управления .NET Windows Forms, размещенный в Internet Explorer с помощью тега «object» - например, <object id="myObj" height="100%" width="100%" classid="/MyVirtualDir/MyAssembly.dll#MyAssembly.MyControl" name="myObj">

Веб-приложение требует его добавления взона «Надежные узлы» и есть установщик для настройки разрешений CAS.Если у нас есть проблемы, мы также просматриваем многочисленные контрольные списки, чтобы убедиться в правильности установки разрешений для зоны надежных сайтов (и дополнительных параметров), чтобы позволить элементу управления .NET загружать и запускать.

Мы смоглизаставить это работать для тысяч клиентов, использующих IE6, IE7 и IE8, и для более 95% клиентов, использующих IE9.

Однако почти каждую неделю мы сталкиваемся с каким-либо клиентом, который был обновлен до IE9 (либо какновый ПК или обновление существующего ПК), где .NET Control отображается в виде белого поля с красным крестиком в верхнем левом углу.

Мы предприняли множество действий, чтобы попытаться устранить эту проблему:

  • Мы перепроверили все разрешения «Надежные сайты», чтобы убедиться, что они установлены правильно.
  • Мы убедились, что параметры расширенного Интернета соответствуют всем работающим машинам.
  • Мы проверяем надстройки Internet Explorer и обычно отключаем все из них при устранении неполадок (особенно антивирусных надстроек, которые известныo запретить запуск элементов управления .NET)
  • Мы проверили временные файлы Интернета на нескольких клиентах;Ссылочная управляющая DLL там не появляется
  • Затем мы установили Fiddler2 для мониторинга запросов;Fiddler2 показал, что IE9 не делает запрос на загрузку управляющей DLL

Так что, похоже, IE9 вообще не может обработать тег «object».Такое поведение можно ожидать от страницы, загруженной в «Интернет-зону», но я не могу понять, почему это происходит с настройками доверенной зоны.

Я искал другие вопросы, подобные этомуот других людей - самый похожий вопрос, который я обнаружил, был размещен здесь (http://www.pcreview.co.uk/forums/embedded-usercontrol-sometimes-displays-red-x-internet-explor-t3608356.html), но это с 2008 года (до IE9), и никто так и не ответил.

Странная вещь в нашей проблеме - единственное решениемы обнаружили, что нужно удалить IE9 и вернуться к IE8 - это работало в основном каждый раз! Так что не похоже, что на этих клиентах может быть параметр групповой политики или что-то еще, что мешает IE даже пытаться загрузить.NET control, так как мы можем заставить его работать в IE8, он просто не работает в IE9.

Кто-нибудь знает, что здесь может происходить? Есть ли дополнительные настройки в IE9 (илинастройка Windows, на которую обращает внимание только IE9), которая помешает запуску элементов управления .NET на доверенном сайте?

Ответы [ 2 ]

1 голос
/ 26 января 2013

После многих постов на форуме и множества догадок я нашел этот раздел реестра: HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ ActiveX Совместимость {00000000-0000-0000-000000000000} \

СовместимостьFlags = 0x400 (1024)

Насколько я понимаю, это флаг ActiveX "Killbits", применяемый к пустому GUID;и из того, что я могу сказать, IE9 ищет этот ключ по отношению к .NET Controls, а IE8 - нет, поэтому он работает в IE 8 со всеми одинаковыми настройками на той же машине.

У меня был другойнапишите на форумах MSDN здесь , если вы хотите больше подробностей.

1 голос
/ 03 апреля 2012

Я наткнулся на этот пост, когда искал ответ на ту же проблему. Все было хорошо для более 95% пользователей, но для некоторых это просто не сработало. Я думаю, что отследил его до версии IE, которая работает - 32-битная или 64-битная. Я думаю, что 32-разрядная версия является версией по умолчанию, и, кажется, она всегда работает для меня и наших пользователей. 64 бит с другой стороны не будет работать вообще. Пользователи, у которых были проблемы, запустили 32-разрядную версию IE9, выбрав ее специально в меню «Пуск», и мой элемент управления был загружен правильно.

...