usercontrol, размещенный в IE, отображается как текстовое поле - PullRequest
14 голосов
/ 03 июня 2010

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

Это особенно сложно, потому что, кажется, никто не знает много о размещенных элементах управления пользователя и всех данных обсуждений за 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 и библиотеку Aspose.

Ответы [ 2 ]

1 голос
/ 07 декабря 2011

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

...

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

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

...

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

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

0 голосов
/ 03 ноября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...