it-swarm.com.de

Der Zugriff auf das Office Word-Objektmodell über asp.net ist aufgrund des folgenden Fehlers fehlgeschlagen: 80070005 Zugriff verweigert.

Ich habe eine Website entwickelt, auf der Benutzer Office-Dokumente hochladen können. Anschließend wird das Dokument mithilfe des Office-Objektmodells in eine HTML-Datei konvertiert, die dann in einem iFrame angezeigt wird.

Ich habe natürlich Verweise auf Office.interop.Word eingefügt, und die Site funktioniert auf meinem Entwicklungscomputer einwandfrei. Wenn ich es auf meinen Produktionsserver hochgeladen habe, funktioniert die Site einwandfrei, bis ich versuche, ein Dokument hochzuladen. Ich habe anfangs einen ähnlichen Fehler mit der Meldung "COM-Objekt nicht registriert" erhalten. Ich habe festgestellt, dass Word nicht auf meinem Produktionsserver installiert ist. Also habe ich Word installiert und jetzt wenn der Server versucht, auf das Word-Objektmodell zuzugreifen, wird folgende Fehlermeldung angezeigt:

Das Abrufen der COM-Klassenfactory für die Komponente mit der CLSID {000209FF-0000-0000-C000-000000000046} ist aufgrund des folgenden Fehlers fehlgeschlagen: 80070005 Der Zugriff wurde verweigert. (Ausnahme von HRESULT: 0x80070005 (E_ACCESSDENIED)

Ich habe die Registrierung nach der entsprechenden CLSID durchsucht und einen entsprechenden Ordner gefunden. Ich habe dem IUSR_-Konto die Vollzugriffsrechte hinzugefügt, und aufgrund des anhaltenden Fehlers habe ich schließlich "allen" die Vollzugriffsrechte hinzugefügt und sichergestellt, dass diese Berechtigungen bis auf den Rest des Ordners vererbt werden. Ich habe dann IUSR_ die Vollzugriffssteuerung hinzugefügt und schließlich "Jeder" meinem Microsoft Office-Ordner die Vollzugriffssteuerung hinzugefügt.

Ich weiß nicht, welche anderen Berechtigungen zu erteilen sind und wo, um diesen Fehler "Zugriff verweigert" zu beheben. Ich muss sie an der falschen Stelle erteilen, weil, soweit ich weiß, ich kann nicht freizügiger sein als "Jeder" "Vollzugriff".

Kann jemand Licht ins Dunkel bringen?

48
Camenwolf

Das hat bei mir funktioniert:

  1. In der Kommandozeile setzen Sie DCOMCNFG
  2. Komponentendienste -> Computer -> Arbeitsplatz -> DCOM-Konfig
  3. Suchen Sie nach "Microsoft Word 97 - 2003-Dokument" (Wenn es fehlt, überprüfen Sie, ob Ihr Word auch 64-Bit ist (wenn Ihr Windows ist), wenn es nicht ausgeführt wird. mmc comexp.msc /32 anstelle von DCOMCNFG in Schritt 1, wie von Darksealhier ) vorgeschlagen
  4. Rechtsklick -> Eigenschaften
  5. Wechseln Sie zur Registerkarte Sicherheit, und bearbeiten Sie die Optionsfelder "Anpassen", damit IIS_IUSRS über Start- und Zugriffsrechte verfügt
  6. Gehen Sie zur Registerkarte Identität und wählen Sie "Der interaktive Benutzer"
  7. Übernehmen Sie die Änderungen und versuchen Sie es erneut
  8. Wenn all dies fehlschlägt, gehen Sie ebenfalls zum Tab "Allgemein" und wählen Sie in der Dropdown-Liste "Authentifizierungsebene" die Option "Keine".
40
gyosifov

Ok, ich habe dieses Problem mit den folgenden Schritten gelöst:

  1. Geben Sie in der Befehlszeile DCOMCNFG ein
  2. Erweitern Sie Konsolenstamm> Komponentendienst> Computer, klicken Sie mit der rechten Maustaste auf Arbeitsplatz und wählen Sie Eigenschaften
  3. Klicken Sie auf der Registerkarte COM-Sicherheit> Start- und Aktivierungsberechtigungen auf Standard bearbeiten
  4. Fügen Sie den Benutzer (z. B. IIS_IUSRS) oder den Dienst hinzu
  5. Aktivieren Sie "Lokales Starten und lokale Aktivierung zulassen"

Dann können Excel, Word und andere Anwendungen funktionieren, viel Glück.

59
sur97c

Suchen Sie in der Ereignisanzeige unter Windows-Protokolle, System auf dem Servercomputer, auf dem Word installiert ist. Wird ein Ereignis protokolliert, das etwas Ähnliches wie Folgendes liest:

Die Standardberechtigungseinstellungen des Computers gewähren dem Benutzer SomeMachine\SomeUser SID (S-1-5-21-483881670-2168941642- 1987552629-1003) von der Adresse LocalHost (unter Verwendung von LRPC). Diese Sicherheitsberechtigung kann mit dem Verwaltungstool Komponentendienste geändert werden.

Wenn ja, führen Sie DCOMCNFG.EXE aus und gehen Sie zu Komponentendienste, Computer, Arbeitsplatz (oder wie auch immer), DCOM-Konfiguration (und Sie können einfach mit "Nein" antworten, wenn Sie gefragt werden, ob Sie etwas reparieren möchten) und zum Ereignisprotokoll message ist für eine Anwendung, dann suchen Sie nach dem Namen in der Ereignisprotokollnachricht, hier nach dem Elementnamen, und wenn die Ereignisprotokollnachricht für eine CLSID ist (wie im obigen Beispiel), suchen Sie sie nach die CLSID "{148B ...}" (das ist nur eine zufällige CLSID, die ich eingefügt habe - wahrscheinlich entspricht sie Ihrer 000209FF ... oben), und wählen Sie auf der Registerkarte Sicherheit die Option Weitere Aktionen ... Eigenschaften aus.

Hier können Sie [x] Anpassen und dann Bearbeiten auswählen, um die Berechtigung für das entsprechende Benutzerkonto hinzuzufügen, die erforderliche DCOM-Anwendung oder -Klasse zu aktivieren und darauf zuzugreifen.

Es ist nur eine Vermutung, aber probieren Sie es aus oder etwas in dieser Richtung (d. H. Gewähren des Zugriffs auf die CLSID über DCOMCNFG).

12
Jim Flood

Ich hatte es schwer, dies mithilfe der akzeptierten Antwort herauszufinden, da der Microsoft Word 97 - 2003 - Dokumentdatensatz nicht unter den DCOM - Konfigurationselementen aufgeführt war. Ich fand die Lösung in diesem Technet-Blog-Beitrag , wo das Problem richtig erklärt wurde:

Wenn Sie Microsoft Office 32-Bit auf einem 64-Bit-Computer installieren, müssen Sie möglicherweise den 32-Bit-DCOM-Konfigurationsmanager verwenden, um die Programme anzuzeigen. Dies hängt von Ihrem Betriebssystem ab.

Unter x64-Betriebssystemen von Windows XP bis Windows Server 2008 konfiguriert die 64-Bit-Version von DCOMCNFG.EXE 32-Bit-DCOM-Anwendungen nicht ordnungsgemäß für die Remoteaktivierung Remote-Aktivierung statt lokaler Aktivierung Dieses Verhalten tritt in Windows 7 und Windows Server 2008 R2 und höheren Versionen nicht auf.

Ref .: http://msdn.Microsoft.com/en-us/library/windows/desktop/ms678426 (v = vs.85) .aspx

Außerdem wird empfohlen, den folgenden Befehlszeilenbefehl (anstelle von DCOMCNFG) als wirksamen Fix zu verwenden:

mmc comexp.msc /32

Dies erzwingt das Laden des 32-Bit-DCOM-Konfigurationsmanagers anstelle des 64-Bit-Managers und ermöglicht das Ausführen der in der akzeptierten Antwort beschriebenen Schritte. Wenn dies immer noch nicht funktioniert, werden im Artikel auch einige andere mögliche Problemumgehungen erläutert.

Für weitere Informationen zu diesem Thema können Sie auch diesen Beitrag lesen auf meinem Blog.

5
Darkseal

Wenn Sie Microsoft Word-Anwendung in DCOM nicht finden können

Versuchen Sie dies auf einem 64-Bit-System mit 32-Bit-Office:

  1. Listenpunkt
  2. Start
  3. Lauf
  4. mmc-32
  5. Datei
  6. Hinzufügen Snap-In entfernen
  7. Komponentendienste
  8. Hinzufügen
  9. In Ordnung
  10. Konsolenstamm
  11. Komponentendienste
  12. Computers
  13. Mein Computer
  14. DCOM-Konfig

danach

  1. Suchen Sie nach "Microsoft Word 97 - 2003 Document" (Wenn es fehlt, überprüfen Sie, ob Ihr Word auch 64-Bit ist (wenn Ihr Windows ist).)
  2. Rechtsklick -> Eigenschaften
  3. Wechseln Sie zur Registerkarte Sicherheit, und bearbeiten Sie die Optionsfelder "Anpassen", damit IIS_IUSRS über Start- und Zugriffsrechte verfügt
  4. Gehen Sie zur Registerkarte Identität und wählen Sie "Der interaktive Benutzer". Übernehmen Sie die Änderungen und versuchen Sie es erneut
  5. Wenn dies alles fehlschlägt, gehen Sie ebenfalls zur Registerkarte "Allgemein" und wählen Sie in der Dropdown-Liste "Authentifizierungsebene" die Option "Keine".
1