2016-04-04 1 views
0

Я создал службу Windows в .Net 4.5.Услуга написана, чтобы открыть Outlook-клиент, читать письма из папки «Входящие», загружать Вложения. Правильный код, , так как я запустил &, он протестировал его в консольном приложении. Но когда я установить веб-службы с помощью «InstallUtil» и запустить его, служба бросает следующее сообщение об ошибке на следующей строке кода:Извлечение фабрики COM-класса для компонента с CLSID {0006F03A-0000-0000-C000-000000000046} не выполнено

Outlook.Application myApp = new Outlook.Application(); 

Ошибка:

Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80010001 Call was rejected by callee. (Exception from HRESULT: 0x80010001 (RPC_E_CALL_REJECTED))Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80010001 Call was rejected by callee. (Exception from HRESULT: 0x80010001 (RPC_E_CALL_REJECTED)).

FYI, услуга не работая на моей машине, я чувствую, что для обслуживания может потребоваться некоторое разрешение, если да, дайте мне знать, как назначить разрешения для службы Windows.

+1

Ответ заключается не в том, чтобы запускать Outlook из службы, а в том, что он не должен использоваться таким образом. Для начала профили MAPI привязаны к текущему зарегистрированному пользователю, а не к учетной записи, в которой работает служба, и даже если вы обошли этот MAPI, это эксклюзивно, поэтому служба остановит пользователя на входе в свой профиль на своем рабочем столе , –

+0

Код здесь: - Outlook.Application myApp = new Outlook.Application(); Outlook.NameSpace mapiNameSpace = myApp.GetNamespace ("MAPI"); ns = myApp.GetNamespace ("MAPI"); –

+0

Ошибка: - Извлечение фабрики COM-класса для компонента с CLSID {0006F03A-0000-0000-C000-000000000046} не удалось из-за следующей ошибки: 80010001 Звонок был отклонен вызываемым пользователем. (Исключение из HRESULT: 0x80010001 (RPC_E_CALL_REJECTED)) Извлечение фабрики COM-класса для компонента с CLSID {0006F03A-0000-0000-C000-000000000046} не удалось из-за следующей ошибки: 80010001 Звонок был отклонен вызываемым пользователем. (Исключение из HRESULT: 0x80010001 (RPC_E_CALL_REJECTED)) –

ответ

1

Корпорация Майкрософт не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любого беззащитного, неинтерактивного клиентского приложения или компонента (включая службы ASP, ASP.NET, DCOM и NT), поскольку Office может проявлять неустойчивое поведение и/или тупик, когда Office запущен в этой среде.

Если вы создаете решение, которое выполняется в контексте на стороне сервера, вы должны попытаться использовать компоненты, которые были безопасны для автоматического выполнения. Или вы должны попытаться найти альтернативы, которые позволяют хотя бы часть кода запускать клиентскую сторону. Если вы используете приложение Office из серверного решения, для успешного выполнения приложения не будет достаточного количества необходимых возможностей. Кроме того, вы рискуете стабильностью своего общего решения. Подробнее об этом читайте в статье Considerations for server-side Automation of Office.

Вместо этого используйте API низкого уровня - расширенный MAPI. Или любые другие сторонние обертки вокруг этого API (например, Redemption).

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