2009-05-19 2 views
20

Ich verwende ein Excel-Objekt (COM-Komponente) für Excel-Manipulation. Es funktioniert gut auf meinem PC, aber wenn ich die Anwendung auf unser Intranet bereitstellen erhalte ich diese Fehlermeldung:Abrufen der COM-Klassenfabrik für Komponente fehlgeschlagen

Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005

I Windows-Authentifizierung verwenden und Identitätswechsel = true in meinem web.config.

Ich habe alle Einstellungen im Komponentendienst gemacht, aber es gibt immer noch den gleichen Fehler.

Bitte helfen

+1

Haben Sie bei dieser Frage eine funktionierende Lösung gefunden? Ich habe gerade diese Frage mit dem gleichen Problem gestellt. Ich betreibe eine VB.Net App, ** nicht ** Asp.Net. –

+0

macht mir nichts aus, ich musste die .NET-Funktionalität von Excel aus dem Office-Installer installieren. Silly mich –

Antwort

5

Es gibt eine weitere Frage, die Sie benötigen könnten zu adressieren, wenn Sie die Windows 2008 Server mit IIS7 verwenden. Der Server meldet möglicherweise den folgenden Fehler:

Microsoft Office Excel kann nicht auf die Datei 'c: \ temp \ test.xls' zugreifen. Es gibt mehrere mögliche Gründe:

  • Der Dateiname oder Pfad existiert nicht.
  • Die Datei wird von einem anderen Programm verwendet.
  • Die Arbeitsmappe, die Sie speichern möchten, hat denselben Namen wie eine derzeit geöffnete Arbeitsmappe.

Die Lösung hier gepostet wird (suchen Sie nach dem Text von Benutzer Ogawa geschrieben): http://social.msdn.microsoft.com/Forums/en-US/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91?prof=required

+1

+1000 für Server 2008 x64 Ordner hinzufügen 'C: \ Windows \ SysWOW64 \ Config \ Systemprofil \ Desktop' Bingo !!! – dotjoe

+0

Es rettete meinen Tag. – mike27015

2

Falls es hilft jemand:

Ich bin mit Windows 7 64-bit und ich wollte Registrieren Sie eine 32-Bit-DLL.

Zuerst habe ich versucht: regsvr32 und bekam folgende Fehlermeldung:

System.Runtime.InteropServices.COMException (0x80040154): Suchen Sie den COM-Klassenfactory für die Komponente mit CLSID {A1D59B81-C868-4F66-B58F-AC94A4A7982E} konnte aufgrund der folgenden Fehler: 80040154.

Dann habe ich versucht, die Anwendung durch die Komponentendienste (Run-> DCCOMCNFG) (http://www.justskins.com/forums/difference-registering-dll-using-regsvr32-and-component-services-17280.html) und bekam die folgende Fehlermeldung hinzuzufügen:

System.UnauthorizedAccessException: die COM-Abrufen Klassenfabrik für Komponente mit CLSID {A1D59B81-C868-4F66-B5 8F-AC94A4A7982E} fehlgeschlagen aufgrund des folgenden Fehlers: 80050005.

Es gibt viele Links zu lösen, aber was für mich funktionierte war: Console Root -> Komponentendienste -> Computer -> Arbeitsplatz -> COM + -Anwendungen - > -> Eigenschaften: Registerkarte Sicherheit: Berechtigung: Deaktivieren Sie 'Zugriffschecks für diese Anwendung erzwingen'.

Ich weiß nicht, was es tut.

3

Dies hat den Trick für mich: (Lösung aus dem msdn forum)

goto Controlpanel --> Administrative tools-->Component Services -->computers --> myComputer -->DCOM Config --> Microsoft Excel Application.

right click to get properties dialog. Goto Security tab and customize permissions accordingly.

In Start- und Anwendungsberechtigungen Anpassen, Bearbeiten. Fügen Sie den Benutzer/die Gruppe hinzu, die die Anwendung aufruft.

4

Sie auch diese Fehlermeldung erhalten, wenn es abgestanden EXCEL.EXE Prozesse im System sind (Verwendung Task Manager --> Processes Tab diese zu sehen.)

Tötet alle diese Instanzen und die Anwendung der Regel funktionieren würde.

0

Die CLSID, die Sie beschreiben, ist für die Microsoft.Office.Interop.Excel.ApplicationClass. Diese Klasse startet excel.exe grundsätzlich über InprocServer32. Wenn Sie es nicht installiert haben, wird es die Fehlermeldung, die Sie oben erhalten haben, zurückgeben.

+0

Ja, Excel ist nicht auf dem Server installiert. Gibt es eine andere Möglichkeit, Interop zu verwenden, ohne Excel auf dem Servercomputer zu installieren? Ich frage das, weil ich keinen Zugang haben kann, um andere Software auf dem Server zu installieren. –

+0

Ich glaube nicht, dass es da ist. Excel.exe ähnelt der Engine. Möglicherweise können Sie den Webdienst auf einem anderen Computer (mit Excel) entwickeln und diesen Webdienst dann vom Server aus aufrufen, um die Anforderung zu verarbeiten und das Ergebnis zurückzusenden. Dies würde starke Programmierkenntnisse für Windows und .NET erfordern. Es gibt auch Bibliotheken von Drittanbietern, um Excel-Dokumente zu manipulieren. –

+0

@UmerFarooq Wie zu einfachen Web Service https://support.microsoft.com/en-us/kb/308359. Große Daten im Web Service https://msdn.microsoft.com/en-us/library/aa528822.aspx zurückgeben. –

20

Ich hatte den gleichen Fehler, wenn ich meine App bereitgestellt habe. Ich habe Lösung von dieser Seite bekommen: Component with CLSID XXX failed due to the following error: 80070005 Access is denied

Hier ist diese Lösung:

  1. In DCOMCNFG der rechten Maustaste auf den Arbeitsplatz und wählen Sie Eigenschaften .

  2. Wählen Sie COM Securities Registerkarte.

  3. In Zugriffsberechtigungen, klicken Sie auf Standardwerte bearbeiten und Network Service um es hinzuzufügen, und geben Sie ihm den lokalen Zugriff Genehmigung zulassen . Machen Sie dasselbe für < Machine_name> \ Benutzer.

  4. In Start- und Aktivierungsberechtigungen, klicken Sie auf Standardwerte bearbeiten und Network Service um es hinzuzufügen, und geben Sie es Local Launch und Lokale Aktivierung Erlaubnis. Machen Sie dasselbe für < Machine_name> \ Benutzer.

* Ich habe Formularauthentifizierung verwendet.

+0

Funktioniert das mit Windows Server 2012 R2? –

+0

Ich kann mich nicht erinnern, welche Version des Systems ich hatte. Hast du diese Lösung versucht? – Monic

+0

Das funktionierte für mich, nachdem ich eine Lösung für ungefähr 10 Stunden gesucht hatte. Die anderen Lösungen erwähnen spezifische Programme, um die Berechtigungen für Binär- (DLL-) Builds zu ändern oder sie zu ändern. Dies erwähnt die Wurzel (Arbeitsplatz) und korrigiert die Benutzer. +1. – P5Coder

0

Für IIS 8 habe ich im Grunde das gleiche wie Monic. Ich führe meine Anwendung als eigenen App-Pool auf einem x64-Computer aus 1. Klicken Sie in DCOMCNFG mit der rechten Maustaste auf den Arbeitsplatz, und wählen Sie Eigenschaften aus.

2.Wählen Sie die Registerkarte COM Securities.

3.In Access Permissions, klicken Sie auf Edit Defaults und fügen Sie iis apppool \ myapp hinzu, und geben Sie es lokalen Zugriffsberechtigungen erlauben. Tun Sie dasselbe für iis apppool \ myapp

4.Klicken Sie unter Start- und Aktivierungsberechtigungen auf Standardwerte bearbeiten, fügen Sie iis apppool \ myapp hinzu und erteilen Sie ihm den lokalen Start und die Berechtigung zur lokalen Aktivierung. Mach dasselbe für iis apppool \ myapp.

zusätzlich hatte ich die Ordner unter C umrissenen zu machen: \ Windows \ SysWOW64 \ config \ Systemprofile \ Desktop und geben lesen \ Schreibberechtigungen für iis AppPool \ myapp auch

0

ich Ihren Schmerz verstehen kann. In meinem Fall wurde der Fehler durch Ausführen der folgenden Schritte behoben:

  1. Start> Ausführen> dcomcnfg.
  2. Öffnen Sie den Ordner DCOM-Konfiguration und wählen Sie Komponentendienste> Computer> Arbeitsplatz> DCOM-Konfiguration.
  3. Wählen Sie "Microsoft Office Word 97 - 2003 Dokument"/"Microsoft Excel-Anwendung" und gehen Sie zu seinen Eigenschaften.
  4. Auf der Registerkarte "Sicherheit" muss die Option "Start- und Aktivierungsberechtigungen" angepasst werden (berechtigter Benutzer).
  5. Gehen Sie jetzt zu IIS und wählen Sie den Anwendungspool des Webs und gehen Sie zu den erweiterten Einstellungen und wählen Sie "NETWORK SERVICE" als Identität Benutzer.

Hoffe, das hilft.