2017-02-13 4 views
0

Einige meiner Kunden erhalten diesen Fehler, wenn mein Produkt versucht, auf Outlook über Out-of-Process-Outlook-COM-Objekte und Redemption-COM-Objekte zuzugreifen.Zugriff auf Outlook-COM-Objekt führt zu Fehler 0x80080005 CO_E_SERVER_EXEC_FAILURE

Ich habe gelesen, dass dieser Fehler auftreten kann, wenn mein Produkt und Outlook auf verschiedenen Berechtigungsebenen ausgeführt werden (z. B. Outlook als Administration, mein Produkt als Standardbenutzer). Gibt es noch andere mögliche Ursachen?

Hier ist der Fehler Call-Stack:

System.Runtime.InteropServices.COMException (0x80080005): der COM-Klassenfactory für die Komponente mit CLSID {Abrufen von 0006F03A-0000-0000-C000-000000000046} aufgrund der nach gescheiterter Fehler: 80080005 Serverausführung fehlgeschlagen (Ausnahme von HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)).
bei
System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject (Runtimeobjecttype)
bei
System.Runtime.Remoting.Activation.ActivationServices.CreateInstance (Runtimeservertype)
bei
System.Runtime.Remoting.Activation.ActivationServices. IsCurrentContextOK (Runtimeservertype, Object [] Requisiten, Boolean bNewObj)
bei
System.RuntimeTypeHandle.CreateInstance (Runtime Typ, Boolean publicOnly, Boolean NOCHECK, Boolean & canBeCached, RuntimeMethodHandleInternal & ctor, Boolean & bNeedSecurityCheck) bei System.RuntimeType. CreateInstanceSlow (Bo Olean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark & stackMark)
bei
System.RuntimeType.CreateInstanceDefaultCtor (Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark & stackMark)
bei
System.Activator.CreateInstance (Typ Typ , Boolean nonPublic)
bei
System.Activator.CreateInstance (Typ Typ)

+0

Dieses Problem wird notorisch vom falschen Ende debuggt.Outlook ist beim Starten abgestürzt und gebrannt. Du weißt nicht warum. Es ist nicht üblich, zu stürzen, aber es passiert. Wenn ein Neustart des Computers es nicht behebt, sollte der Benutzer es erneut installieren. Am besten den IT-Mitarbeitern überlassen. –

Antwort

0

Es ist entweder, weil die out-of-proc-Objekt (Outlook) abgestürzt und die COM-Proxy in Ihrem Adressbuch Prozess sprechen nicht mehr auf es oder weil das se Curity-Kontexte sind unterschiedlich.

+0

In diesem Fall wurde dem Kunden gesagt, dass er die Repair-Funktion des Installationsprogramms von Outlook ausführen soll, und dieses Problem scheint behoben zu sein. – Jeff

0

Wo versuchen Sie Outlook zu automatisieren?

Microsoft empfiehlt derzeit keine Automatisierung von Microsoft Office-Anwendungen aus einer unbeaufsichtigten, nicht interaktiven Clientanwendung oder -komponente (einschließlich ASP-, ASP.NET-, DCOM- und NT-Dienste), da Office möglicherweise ausgestellt wird instabiles Verhalten und/oder Deadlock, wenn Office in dieser Umgebung ausgeführt wird.

Wenn Sie eine Lösung erstellen, die in einem serverseitigen Kontext ausgeführt wird, sollten Sie versuchen, Komponenten zu verwenden, die für die unbeaufsichtigte Ausführung gesichert wurden. Oder Sie sollten versuchen, Alternativen zu finden, mit denen zumindest ein Teil des Codes clientseitig ausgeführt werden kann. Wenn Sie eine Office-Anwendung von einer serverseitigen Lösung aus verwenden, fehlen der Anwendung viele der für die erfolgreiche Ausführung erforderlichen Funktionen. Darüber hinaus gehen Sie mit der Stabilität Ihrer Gesamtlösung Risiken ein. Lesen Sie mehr dazu im Artikel Considerations for server-side Automation of Office. Sie können in Betracht ziehen, eine Low-Level-API (Extended MAPI) für die Verwendung auf der Serverseite anstelle von OOM zu verwenden.

Auch finden Sie möglicherweise die When CoCreateInstance returns 0x80080005 (CO_E_SERVER_EXEC_FAILURE) Artikel, der ein ähnliches Problem hilfreich beschreibt.

+0

Meine Frage bezieht sich auf eine Legacy-App für Windows Forms-Desktops, die zu einem Zeitpunkt geschrieben wurde, als Microsoft den Zugriff auf Outllook über die Out-of-Process-COM unterstützte. Danke für deine Vorschläge. – Jeff

+0

Outlloook über Out-of-Process COM kann heutzutage auch zugegriffen werden. Aber der Artikel beschreibt einen möglichen Fall mit einem serverseitigen Kontext. –

Verwandte Themen