2017-02-13 8 views
0

Пару моих клиентов получают эту ошибку, когда мой продукт пытается получить доступ к Outlook через COM-объекты вне процесса Outlook и COM-объекты Redemption.Доступ к объекту COM COM Outlook приводит к ошибке 0x80080005 CO_E_SERVER_EXEC_FAILURE

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

Вот стек вызовов ошибка:

System.Runtime.InteropServices.COMException (0x80080005): Получение COM фабрики классов для компонента с CLSID {0006F03A-0000-0000-C000-000000000046} не удалось из следующих Ошибка: 80080005 Ошибка выполнения сервера (Исключение из HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)).
на
System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject (RuntimeType ObjectType)
на
System.Runtime.Remoting.Activation.ActivationServices.CreateInstance (RuntimeType ServerType)
на
System.Runtime.Remoting.Activation.ActivationServices. IsCurrentContextOK (RuntimeType ServerType, Object [] реквизит, булева bNewObj)
на
System.RuntimeTypeHandle.CreateInstance (типа RuntimeType, булева publicOnly, булева NOCHECK, булева & canBeCached, RuntimeMethodHandleInternal & CTOR, булевы & bNeedSecurityCheck) при System.RuntimeType. CreateInstanceSlow (Bo олеан publicOnly, булева skipCheckThis, булева fillCache, StackCrawlMark & stackMark)
на
System.RuntimeType.CreateInstanceDefaultCtor (Boolean publicOnly, булева skipCheckThis, булева fillCache, StackCrawlMark & stackMark)
на
System.Activator.CreateInstance (Тип , Boolean непубличных)
в
System.Activator.CreateInstance (тип Type)

+0

Эта проблема, как известно, отлаживается с неправильного конца.Outlook был разбит и сожжен, когда вы его начали. Вы не знаете, почему. Это не так, как обычно, сбой, но это происходит. Если перезагрузка машины не исправит ее, пользователь должен ее переустановить. Лучше всего оставить ИТ-персонал. –

ответ

0

Это не либо потому, что вне прок объекта (Outlook) разбился и COM-прокси в вашем процессе адреса больше не может разговаривать это или потому, что контексты безопасности различны.

+0

В этом случае клиенту было предложено запустить функцию «Ремонт» установщика Outlook и, похоже, исправили эту проблему. – Jeff

0

Где вы пытаетесь автоматизировать Outlook?

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

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

Также вы можете найти статью When CoCreateInstance returns 0x80080005 (CO_E_SERVER_EXEC_FAILURE), в которой описывается аналогичная проблема.

+0

Мой вопрос касается устаревшего приложения рабочего стола Windows Forms, которое было написано в то время, когда Microsoft поддерживала доступ к Outllook через COM вне процесса. Спасибо за ваши предложения. – Jeff

+0

Доступ к Outllook через COM вне процесса может быть доступен и в наши дни. Но в статье описывается возможный случай с серверным контекстом. –

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