Interop.Word Documents.Open null

Я пытаюсь открыть файл .docx и преобразовать в PDF с помощью Interop.Word.Application. Он работает как консольное приложение, но если я использую его в своем веб-приложении, он не работает. Я попытался увидеть разрешения в папке. Я дал "Network Service" с полным контролем, но все же я получаю ссылку на объект, не установленную в word.Documents.Open. Не могли бы вы сообщить мне, что может быть проблемой? Я застрял в этой ошибке. Пожалуйста, дайте мне знать. Я ценю любые предложения. Спасибо.

    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();

Ответы

Ответ 1

Если вы все еще ищете ответ, я нашел его всего лишь минуту назад для моего проекта.

Откройте настройки конфигурации DCOM:

  • Пуск → dcomcnfg.exe
  • Компьютер
  • Локальный компьютер
  • Конфигурация DCOM
  • Поиск Microsoft Word 97-2003 Documents → Свойства

Вкладка Identity, измените с Launching User на Interactive User

Ответ 2

Попробуйте это, это может вам помочь.

  • Создайте новый каталог "Рабочий стол" внутри "C:\Windows\SysWOW64\config\systemprofile \"

он работает для меня после долгого долгого долгого поиска решения.

Он швы, чтобы быть проблемой профиля.

Ответ 4

Как заявил Поли в своем комментарии к OP, я думаю, что проблема в основном связана с библиотеками на веб-сервере. Возможно, вы сможете взломать эту работу в веб-приложении, но я бы посоветовал это сделать.

EDIT: Арг, я неправильно прочитал сообщение и только что принял Excel. Это то, что большинство людей ищет при использовании Office.Interop в моем опыте;)

Существует открытая библиотека, которая работает с форматами DocX (введите описание ссылки здесь). К сожалению, он допускает на странице, что преобразования в форматы, такие как PDF, практически невозможно без библиотек Office.Interop(http://cathalscorner.blogspot.com/2009/10/converting-docx-into-doc-pdf-html.html)

Здесь является "перспективной" альтернативой, но YMMV.

Ответ 5

Скорее всего, у вас есть другое слово dll на вашем веб-сервере, возможно, более старое. Я предлагаю вам ссылаться на конкретную DLL и копировать ее на веб-сервер, поэтому вы можете быть уверены, что используете одно и то же слово dll, с которым вы тестировали свой код, и знаете, что он работает. Однако при использовании interop могут возникнуть некоторые проблемы, однако слово interop - единственное, что вы можете быть уверены, что он будет правильно преобразовывать файлы слов.

Ответ 6

Чтобы решить эту проблему, я должен был сделать обе вещи:

  • Создайте каталоги:

    • C:\Windows\System32\config\systemprofile\AppData\Local\Microsoft \Windows\INetCac‌he
    • C:\Windows\System32\config\systemprofile\Desktop
  • Включите настройку DCOM , как @gianni-b говорит.

Если вам не удается найти запись DCOM из-за другого языка, вы можете сделать это:

  1. Меню Пуск> regedit
  2. Перейдите к HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{00020906-0000-0000-C000-000000000046}
  3. Щелкните правой кнопкой мыши> Создать> Значение строки

    • В качестве ключа введите RunAs
    • Для значения поместите Interactive User

Вы можете сделать то же самое для Excel на AppID {00020812-0000-0000-C000-000000000046}.

Ответ 7

Я сделал следующие шаги, и все заработало нормально:

  • Создайте папку на рабочем столе
  • Измените элемент DCOM для входа в систему с определенным пользователем вместо запускающего/интерактивного пользователя
  • Изменил службу, чтобы она запускалась как тот же конкретный пользователь

Изменить 2019-09-29. Из-за большого обновления Windows мне пришлось делать точный прогресс снова и снова.