2013-03-13 4 views
2

У меня есть приложение, которое снимает скриншот веб-страниц и создает уменьшенное изображение. Приложение в основном загружает веб-страницу, которая вызывает ActiveX для загрузки веб-страницы с использованием ресурсов IE и снятия скриншота. Это приложение работает на Windows Server 2003 без каких-либо проблем в течение нескольких лет.ActiveX не может отображать страницу, размещенную на том же сервере

Но теперь, когда я обновил сервер до Windows Server 2008, действие скриншота отключается. Из тестов я вижу, что он успешно выполняет скриншот любой веб-страницы, размещенной в Интернете ... кроме страниц, размещенных на одном сервере.

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

Любые идеи относительно того, что может быть причиной этого и как его исправить?

После дальнейших испытаний я сузил причину отказа из-за того, что страница была пополнена из записи базы данных MS-SQL на том же сервере, что и тот, который снимает скриншот. Та же самая страница, сгенерированная на удаленном сервере, фиксируется нормально. Я также установил, что ошибка не свойственна DLL ACASystems, поскольку она также влияет на другую DLL для создания файлов MHT с веб-страниц. Эта DLL (Chilkat.MHT) также использует IE для загрузки и сборки веб-страницы на лету, а затем сохраняет ее как файл .mht.

Таким образом, проблема связана скорее с сборкой веб-страниц IE из MS-SQL при запуске ActiveX. Но решить эту загадку?

+0

Исходный код для элемента управления ActiveX? Без этого я не вижу, как можно ответить на этот вопрос. Я не могу придумать, какова будет проблема, но есть более чем один способ скинуть кошку, и в программировании обычно используются десятки способов выполнения любой заданной задачи. Какой способ был выбран для взаимодействия с IE, я не мог догадаться. – Pete

+0

Исходный код недоступен, так как это плагин для сторонних разработчиков, который используется на http://www.acasystems.com. Я успешно использовал его на Win2003 уже 4 года, а не на Win2008, он терпит неудачу. Я сделал несколько тестов, и он работает при захвате страницы на удаленном сервере. Он также работает при захвате страницы на локальном сервере. Но это не удается при захвате страницы на локальном сервере, которая извлекает записи из базы данных MS-SQL. Если бы я мог вспомнить, как я решил эту проблему 4 года назад. – WilliamK

ответ

0

Нет решения для этого без редактирования кода ActiveX. Поскольку рассматриваемые DLL-ресурсы являются ресурсами сторонних разработчиков, такое редактирование невозможно.

После тестирования 3 различных ActiveX, которые загружают веб-страницу, которая берет снимок экрана или сохраняет как .mht, было обнаружено, что все они не удались при загрузке страницы, которая запрашивала SQL на том же сервере. После обращения к 3 разработчикам DLL всем нам сообщили, что их ActiveX не влияет на MS-SQL.

К сожалению, наши тесты говорят нам об обратном. На этом этапе мы оставляем догадываться, однако эта статья о in-process vs out-process execution может быть связана.

Обходной путь для решения этой проблемы состоял в том, чтобы собрать страницу для захвата из запросов запросов, переданных на страницу, а не заполнять их из SQL-запросов. Эта альтернатива работает отлично.

0

Возможно, проблема маршрутизации (DNS/hostfile ..)? Загружается ли страница на локальную сессию с помощью IE?

+0

Что значит? Кажется, что проблема заключается в запуске ActiveX на том же сервере, который пополняет страницу из MS-SQL. – WilliamK