2014-02-27 8 views
17

Ich versuche, eine .xls-Datei in eine XLSX-Datei auf der Server-Seite mit Microsoft.Office.Interop.Excel.Workbook Klasse zu konvertieren, wie folgt:Server-Ausführung fehlgeschlagen (Ausnahme von HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE))

workBook.SaveAs("FILENAME_HERE", XlFileFormat.xlOpenXMLWorkbook, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, Microsoft.Office.Interop.Excel.XlSaveConflictResolution.xlLocalSessionChanges, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 

und ich den folgenden Fehler erhalten:

Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)). : System.Runtime.InteropServices.COMException (0x80080005): Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)). 
    at System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType) 
    at System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(RuntimeType serverType) 
    at System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(RuntimeType serverType, Object[] props, Boolean bNewObj) 
    at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) 
    at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) 
    at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) 
    at System.Activator.CreateInstance(Type type, Boolean nonPublic) 
    at System.Activator.CreateInstance(Type type) 
    at CALLING_METHOD_IN_MY_LIBRARY_HERE... 

Das Problem besteht darin, dass dieser Fehler nur auf dem Staging-Server auftritt; auf meiner lokalen Maschine funktioniert es gut.

Dinge, die ich auf dem Staging-Server versucht:

  1. ** 1) Führen Sie DCOMCNFG offene Komponentendienste

2) Erweitern Sie Komponentendienste "->" Computer "->" My Computer "->" die DCOM-Konfiguration "

3) Finden Sie die "Microsoft Excel-Anwendung"

4) Rechte th zu öffnen. Dialog e Feld Eigenschaften

5) klickte auf die Registerkarte „Sicherheit“,

6) „Start- und Aktivierungsberechtigungen, Berechtigungen konfigurieren, haben hinzugefügt Berechtigungen - Identität unter Adminstrator Benutzer ausgeführt (Dieser Benutzer), interaktive Benutzer und Starten von Benutzern

7). Start- und Aktivierungsberechtigungen + Zugriffsberechtigungen + Konfigurationsberechtigungen => hinzugefügt IIS_IUSRS + Network Service mit Full Controll **

2. den Build des Projekts geändert, die .xls-Datei von "Any CPU" umwandelt „x86 "auf meinem lokalen Rechner und veröffentlichte diese Bibliothek auf dem Server.

Hat jemand herausgefunden, wie man dieses Problem beheben kann? Ich habe Probleme, dieses Problem seit 2 Tagen zu beheben.

+0

diese Informationen erneut überprüft ich weiß, es albern scheint, aber haben Sie korrekt auf dem Server installiert excel wurde? –

+0

Ja, ich habe Excel auf dem Server installiert. –

+0

Haben Sie eine Lösung gefunden? –

Antwort

0

Das gleiche Problem wurde für mich gelöst, indem "Desktop-Interaktion" für den Dienst ermöglicht. (in Tomcat6w-Konfigurationstool auf Registerkarte Anmelden)

-3

Versuchen Sie, Thread.Sleep-Methode wie Thread.Sleep (2000) für 2 Sekunden nach workBook.open und workBook.SaveAs zwei Methoden hinzuzufügen. Wenn Ihre Excel-Datei viele Formate hat, versuchen Sie, einige weitere Sekunden zu verlängern.

+0

Es gibt keine Callback-Funktionen zum Öffnen und Speichern von Excel-Dateien. Ich hatte Probleme, die Datei zu speichern. Das MS-Support-Team hat mir einen Hinweis auf das Hinzufügen von Ruhe nach dem Speichern gegeben. Für mich geht das. –

8

Verwenden von DCOMCNFG.exe. Öffnen Sie es und gehen Sie zu: Komponentendienste -> Computer -> Arbeitsplatz -> DCOM-Konfiguration -> Microsoft Excel-Anwendung.

Öffnen Sie die Eigenschaften, wählen Sie die Registerkarte Identität, und wählen Sie den interaktiven Benutzer aus.

-1

fand ich diesen Artikel, die mehr über dieses Thema in der Tiefe spricht Wenn das hilft, Fehler „80080005 Server Ausführung (Ausnahme von HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)) failed“ aus folgenden Gründen auftreten könnten:

  1. Die Maschine hat eine hohe CPU-Last und der Prozess dauert sehr lange, bis gestartet wird und die CoRegisterClassObjects() in weniger als 120 Sekunden ausgeführt werden kann.
  2. Der COM-Server registriert nicht für die richtigen Klassen-IDs.
  3. Der COM-Server hält gerade an und zwischen CoCreateInstance und dem COM-Server-Stoppteil liegt eine Race-Bedingung vor.
  4. Es gibt ein Sicherheitsproblem in der Art und Weise der COM-Server (diese Seite scheint falsch geschriebene Passwörter vorschlagen oder fehlt die „Login als Batch-Job“ Privileg für „Ausführen als ..“ COM-Server, aber sowieso ich gestartet würde vorschlagen, für Ihre spezifische Konfiguration)

https://blogs.msdn.microsoft.com/adioltean/2005/06/24/when-cocreateinstance-returns-0x80080005-co_e_server_exec_failure/

+0

Ein Link zu einer Lösung ist willkommen, aber stellen Sie bitte sicher, dass Ihre Antwort ohne sie nützlich ist: [Fügen Sie Kontext um den Link hinzu] (// meta.stackexchange.com/a/8259), damit Ihre Mitbenutzer eine Idee haben, was es ist und warum es dort ist, zitieren Sie dann den relevantesten Teil der Seite, auf den Sie verlinken, falls die Zielseite nicht verfügbar ist. [Antworten, die kaum mehr als ein Link sind, können gelöscht werden.] (// stackoverflow.com/help/deleted-answers) – paper1111

+0

@ paper1111 Ich habe meine Antwort bearbeitet, warum down vote geben genug Zeit, um die Antwort zu verbessern, während ich Ihre begrüßen Vorschlag Ich arbeite an einem ähnlichen Problem und habe dies direkt vom technischen Support von Microsoft zu diesem Problem gefunden. Wenn jemand die Antwort nach unten markiert, würden die Benutzer der Antwort oder dem Link, der in der Antwort geteilt wird, keine Bedeutung beimessen. – ChiragMM

Verwandte Themen