Usercontrol, размещенный в IE, отображается как текстовое поле

В моей текущей саге, чтобы отразить хостинг устаревшего приложения в чистой коробке, я ударил свою следующую загвоздку. Одна страница основывается на большом .NET UserControl, который на новом компьютере отображает только как большой серый цвет greyed textarea (серая вертикальная полоса прокрутки на правом краю. Проверка источника показывает ожидаемый тег object.)

Это особенно сложно, потому что никто, похоже, мало знает о размещенных UserControls и всех данных обсуждений в 2002-2004 годах.

Страница довольно проста:

<%@ Page language="c#" Codebehind="DataExport.aspx.cs" AutoEventWireup="false" Inherits="yyyyy.Web.DataExport" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > 

<html>
  <head>
    <title>DataExport</title>
    <link rel="Configuration" href="/xxxxx/yyyyy/DataExport.config">
  </head>   
    <body style="margin:0px;padding:0px;overflow:hidden">
        <OBJECT id="DataExport" style="WIDTH: 100%; HEIGHT: 100%; position:absolute; left: 0px; top:0px"
            classid="yyyyy.Common.dll#yyyyy.Controls.DataExport"
             VIEWASTEXT>
        </OBJECT>
    </body> 
</html>

Файл конфигурации, на который ссылаются:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="yyyyy">
            <section name="dataExport" type="yyyyy.Controls.DataExportSectionHandler,yyyyy.Common" />
        </sectionGroup>
    </configSections>
    <yyyyy> 
        <dataExport>
            <layoutFile>http://vm2/xxxxx/yyyyy/layout.xml</layoutFile>      
            <webServiceUrl>http://vm2/xxxxx/yyyyy/services/yyyyy.asmx</webServiceUrl>
        </dataExport>   
    </yyyyy>    
</configuration>

Что я проверил:

  • Права безопасности должны быть в порядке, сайт надежен и добавляет исключение URL-адреса, чтобы FullTrust ничего не менял.
  • Файл конфигурации доступен по сети, доступ к layout.xml доступен, ASMX отображает список ожидаемых команд
  • Machine.config предоставляет разрешение GET для файла usercontrol.config.

Что может показаться мне подозрительным:

  • DataExport UserControl ссылается на Aspose.Excel для создания электронных таблиц, которые он экспортирует.
  • Когда я перехожу к странице и получаю пустое текстовое поле, запустите gacutil /ldl, ничего не будет в локальном кеше загрузки. На рабочей машине при выполнении одной и той же команды после просмотра страницы отображается список стилей DLL, включая DLL управления и DLL Aspose.

Ответ 1

Это фактически взято из ответа, который я дал совершенно другому вопросу: Создание и развертывание элемента управления ActiveX в .NET.

...

Легко отлаживать элемент управления, если вы компилируете для отладки и подключаетесь к IE для "управляемой" отладки, как только вы получите контроль над загрузкой. Если вы не можете получить контроль над загрузкой, просмотрите информацию о средстве просмотра привязки сборки fusion: http://msdn.microsoft.com/en-us/library/e74a18c4.aspx и как включить IEHost tracing: http://support.microsoft.com/kb/313892 для отладки процесса загрузки.

Обязательно выполните обновление каждой версии сборки. Если вы этого не сделаете, тогда IE запутается и не будет загружать элемент управления, когда сборка в кеше загрузки отличается, но имеет ту же версию #, что и ссылка на url (gacutil/cdl очищает кеш загрузки .net)

...

В этом ответе есть другие ссылки на информацию об элементах управления, размещенных в IE, которые могут помочь, но похоже, что вы уже прошли через них.

Другая причина, по которой элемент управления может не загружаться, зависит от того, какую версию IE вы используете. IE8 требует, чтобы элемент управления поступал из интрасети или доверенной зоны. Я не знаю, изменилось ли это в IE9 или нет. Но следует отметить, что "localhost" не находится в зоне интрасети, а не по умолчанию в доверенной зоне. Это часто отключает людей, которые тестируют пользовательский интерфейс клиента на веб-сервере.

Ответ 2

Я бы создал виртуальную чистую коробку XP SP3 с исправленным IE 6. Поверните все настройки безопасности в IE 6 и посмотрите, отображается ли это. Если это работает, вы знаете, что это связано с окружающей средой и кодом.