Автоматизация Word из IIS

Я создал приложение Windows, которое запускает процесс Word (Microsoft.Office.Interopt.Word) с помощью C#. Я загружаю две надстройки word.AddIns.Add(@"C:\temp\addin.dot", true);. Этот код отлично работает в моем приложении Windows.

Чтобы иметь возможность запускать этот процесс удаленно, я создал веб-приложение MVC. В веб-приложении используется тот же код, но он дает сбой в той части, где я загружаю надстройки:

ошибка: Word не может открыть этот шаблон документа: (C:\temp\addin.dot)

Веб-приложение использует пул приложений с правами администратора и следующими настройками:

  • Включить 32-разрядные приложения: True
  • Загрузить профиль пользователя: True

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

Редактировать: Диспетчер задач показывает мне, что процесс Word запускается с правильной учетной записью пользователя. Это та же учетная запись, которую я использую при запуске приложения Windows.


person Skuami    schedule 27.01.2015    source источник


Ответы (1)


Веб-серверы не предназначены для запуска пользовательских приложений. Поскольку вы используете ссылку COM, библиотека требует, чтобы приложение выполнялось для выполнения манипуляций.

Если вы хотите автоматизировать создание/чтение документов, я бы посоветовал использовать такую ​​библиотеку, как DocX. Это позволит вам работать непосредственно с самим форматом файла, не используя COM-ссылки (библиотеки взаимодействия).

person Brad Christie    schedule 27.01.2015
comment
Я использую его для переноса различных вещей из normal.dot, таких как автотекст, строительные блоки и так далее. Кроме того, я открываю старые шаблоны (word 2003), проверяю, есть ли в них макросы, и сохраняю их как новые шаблоны (*.dotx / *.dotm). - person Skuami; 27.01.2015
comment
Если для этого требуется пользователь (что делает взаимодействие), вам нужно будет превратить его в сервер, который работает в контексте пользователя, который затем доступен для веб-сервера. Но IIS не может запустить слово. - person Brad Christie; 27.01.2015
comment
Я знаю, что IIS не предназначен для запуска таких приложений, как word. Я оценил различные библиотеки, такие как DocX, но, поскольку нам нужна определенная функциональность Word, мы решили использовать Interop. Веб-приложение будет использоваться онлайн для целей миграции и будет выполняться только одним пользователем, но удаленно. Я также делаю другие вещи в процессе миграции, и все это работает (например, манипуляции с Active Directory, выполнение консольных приложений и т. д.). - person Skuami; 27.01.2015
comment
Фактически такая автоматизация Office на стороне сервера официально запрещена, support.microsoft.com/en-ca/help/257757/ Упоминаются обходные пути, и сторонние решения, такие как DocX, обычно являются правильным путем, если они поддерживают работу в IIS. - person Lex Li; 01.12.2018