it-swarm.com.de

Interop.Word Documents.Open ist null

Ich versuche, die .docx-Datei zu öffnen und mit Interop.Word.Application nach PDF zu konvertieren. Es funktioniert als Konsolenanwendung, aber wenn ich dasselbe in meiner Webanwendung verwende, funktioniert es nicht. Ich habe versucht, die Berechtigungen für den Ordner zu sehen. Ich habe "Network Service" mit Vollzugriff gegeben, aber ich bekomme immer noch eine Objektreferenz, die nicht in Word.Documents.Open gesetzt ist. Könnten Sie mir bitte sagen, was das Problem sein könnte? Ich bleibe bei diesem Fehler. Lass es mich wissen, bitte. Ich freue mich über Vorschläge. Vielen Dank.

    Microsoft.Office.Interop.Word.Application Word = new Microsoft.Office.Interop.Word.Application();

    object oMissing = System.Reflection.Missing.Value;

    Word.Visible = false;
    Word.ScreenUpdating = false;
    string fileName = @"c:\OUTPUT\test.docx");
    Document doc = Word.Documents.Open(filename, ref oMissing,
            ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
            ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
            ref oMissing, ref oMissing, ref oMissing, ref oMissing);
        doc.Activate();
16
nav100

Wenn Sie immer noch nach der Antwort suchen, habe ich sie gerade für mein Projekt gefunden.

DCOM-Konfigurationseinstellungen öffnen:

  1. Start -> dcomcnfg.exe 
  2. Computer 
  3. Lokaler Computer
  4. DCOM konfigurieren 
  5. Suchen Sie nach Microsoft Word 97-2003 Documents -> Eigenschaften

Tab Identity, von Launching User in Interactive User wechseln 

58
Gianni B.

Versuchen Sie dies, es kann Ihnen helfen.

  • Erstellen Sie ein neues "Desktop" -Verzeichnis in "C:\Windows\SysWOW64\config\systemprofile \"

es funktioniert für mich nach einem langen langen tag auf der suche nach der lösung.

Es scheint ein Profilproblem zu sein.

16
nacx08

Dies funktionierte für mich. https://social.msdn.Microsoft.com/Forums/de/f5448a7-72ed-4f16-8b87-922b71892d07/Word-2007-documentsopen-returns-null- in-aspnet .

Wenn dies Ihnen hilft, lassen Sie es bitte antworten 

1
MJSL

Wie Paulie in seinem Kommentar zu OP feststellte, liegt das Problem wahrscheinlich an den Bibliotheken auf dem Webserver. Möglicherweise können Sie hacken, damit dies für eine Web-App funktioniert, aber ich würde davon abraten. 

EDIT: Argh, ich habe den Beitrag falsch gelesen und bin einfach von Excel ausgegangen. Das ist es, worauf die meisten Leute bei der Verwendung von Office.Interop nach meiner Erfahrung achten;)

Es gibt eine offene Bibliothek, die mit DocX-Formaten arbeitet ( Linkbeschreibung hier eingeben ). Leider gibt er auf der Seite zu, dass Konvertierungen in Formate wie PDF ohne die Office.Interop-Bibliotheken ( http://cathalscorner.blogspot.com/2009/10) nahezu unmöglich sind /converting-docx-into-doc-pdf-html.html )

Hier ist eine "vielversprechende" Alternative, aber YMMV.

0
Killnine

Um das zu lösen, musste ich beide Dinge tun:

  • Erstellen Sie die Verzeichnisse:

    • C:\Windows\System32\config\systemprofile\AppData\Local\Microsoft \Windows\INetCac‌he
    • C:\Windows\System32\config\systemprofile\Desktop
  • Aktivieren Sie die DCOM-Einstellung wie @ gianni-b sagt .

Wenn Sie Schwierigkeiten haben, den DCOM-Eintrag aufgrund einer anderen Sprache zu finden, können Sie Folgendes tun:

  1. Startmenü> regedit
  2. Navigiere zu HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{00020906-0000-0000-C000-000000000046}
  3. Klicken Sie mit der rechten Maustaste> Neu> Zeichenfolge

    • Geben Sie für Key RunAs ein.
    • Geben Sie als Wert Interactive User ein.

Sie können dasselbe für Excel mit AppID {00020812-0000-0000-C000-000000000046} tun.

0
vmassuchetto

Ich habe die folgenden Schritte gemacht und es hat gut funktioniert:

  • Erstellen Sie den Desktopordner
  • Ändern Sie das DCOM-Element, um sich mit einem bestimmten Benutzer anstelle eines startenden/interaktiven Benutzers anzumelden
  • Der Dienst wurde so geändert, dass er als derselbe Benutzer gestartet wurde
0
Kevin Cloet

Es ist sehr wahrscheinlich, dass Sie eine andere Word-DLL auf Ihrem Webserver haben, möglicherweise eine ältere. Ich schlage vor, dass Sie auf eine bestimmte DLL verweisen und sie auf den Webserver kopieren, sodass Sie sicher sein können, dass Sie dieselbe Word-DLL verwenden, mit der Sie Ihren Code getestet haben, und wissen, dass er funktioniert Probleme bei der Verwendung von Interop, jedoch ist Word Interop das einzige, bei dem Sie sicher sein können, Word-Dateien am korrektesten zu konvertieren.

0
Ben