Мне нужен ваш совет для следующего кода C #:
EgarDDSEnt.IIVDDSEnt dds = null; // This line executes fine.
dds = new IVDDSEnt(); // This line fails with an exception ...
dds.Connect("username", "password"); // ... which makes this line fail too.
Вот признаки:
Windows Server 2008 R1:
- Код не выполняется, когдавыполняется из приложения-службы Windows.
- Код работает на 100% при выполнении из консольного приложения.
Windows 7:
- Код работает на 100% привыполняется из приложения-службы Windows.
- Код работает на 100% при выполнении из приложения консоли.
Класс IVDDSEnt () - это COM-объект, который устанавливается при установке «ivolatility»SDK ".
Обновление:
- Когда я выполняю" System.IO.Directory.GetCurrentDirectory () "из консольного приложения, он возвращает" D:\ MyDevDirectory \ "
- Когда я выполняю" System.IO.Directory.GetCurrentDirectory () "из приложения-службы, он возвращает" C: \ windows \ system32 \ ".
- Приложениена самом деле один и тот же двоичный файл как для службы, так и для консоли (это гибридное приложение, которое может работать в режиме консоли или востановитесь как служба, если вы передадите ей «-service» в командной строке).
Обновление:
Добавлены try / catch и "e.GetBaseException "(определяется как" Возвращает исключение, являющееся основной причиной одного или нескольких последующих исключений "):
System.Runtime.InteropServices.COMException (0x80080005): Retrieving
the COM class factory for component with CLSID
{FA944FE7-AEB8-4B5B-8315-11D19B1F6264} failed due to the following error:
80080005 Server execution failed (Exception from HRESULT:
0x80080005 (CO_E_SERVER_EXEC_FAILURE)).
at PhiDataOnSchedule.ConsoleApplication.MyMain(Boolean dummyRun)
Обновление:
Все еще можноне решить проблему - самый простой способ - это просто обновить Windows Server 2008 R1 до Windows Server 2008 R2 (если он работает на Win7, а Windows Server 2008 R2 имеет ядро Win7, возможно, он обойдет основную проблему).как-то?).