2016-11-01 3 views
0

Я пытаюсь автоматизировать Internet Explorer с помощью библиотеки WatiN в веб-приложении, размещенном на лазуре. Я получаю следующее исключение при попытке создать экземпляр IE:Автоматизация Internet Explorer на Azure

System.Runtime.InteropServices.COMException (0x80080005): Retrieving the COM class factory for component with CLSID {0002DF01-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE))

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

Обновление: перед тем как получить это исключение, я получил еще один, который сказал, что Interop.SHDocVw.dll не был найден. Я установил свойство Imbed Interop Types в false и скопировал Local в true, и исключение исчезло.

ответ

1

То, что вы пытаетесь достичь, возможно только при использовании облачных сервисов (роли Web и рабочих) или в виртуальных машинах.

Веб-приложения (которые выполняются на планах обслуживания приложений) не поддерживают никакого взаимодействия с COM. И ваш код выходит из строя, потому что он пытается связаться с стандартными COM-интерфейсами IE.

Вы можете узнать больше о Cloud Services here и Virtual Machines here.

+1

Не только роли в Интернете. Роли рабочих тоже, а также виртуальные машины на базе Windows. –

+0

Есть ли какой-то конкретный параметр, который мне нужно сделать, чтобы разрешить взаимодействие в облачном сервисе? – Kira

+0

обычно нет, но если он не работает, вы можете попробовать запустить экземпляр в режиме повышенной (что приведет к его запуску под учетной записью Local System). Проверьте здесь: https://blogs.msdn.microsoft.com/farida/2012/05/01/run-the-azure-worker-role-in-elevated-mode-to-register-httplistener/ – astaykov

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