80080005 Ошибка выполнения сервера при использовании Word Automation - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть приложение .Net C #, которое управляет документами Word.

Я использую Microsoft.Office.Interop.Word.dll, часть Office 2010, версия продукта 14.0.xxx. Вызов:

using Microsoft.Office.Interop.Word;

...

Application app = new Application();

вызывает следующую ошибку:

Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)).

Я также заметил, что когда генерируется эта ошибка, создается экземпляр WINWORD.EXE изависает, но файл связан с Office 365, версия продукта 16.0.xxx.

Я предполагаю, что (по крайней мере один) источник ошибки - несовместимость между используемой DLL иверсия Word, установленная на моей машине для разработки.

ВОПРОС

Возможно ли выполнить автоматизацию делопроизводства без установки Microsoft Office на сервере?

Ответы [ 2 ]

3 голосов
/ 06 ноября 2019

Вам не нужно устанавливать MS на свой сервер, чтобы использовать Office Automation!.

В настоящее время Microsoft не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любых автоматических приложений, кроме-интерактивное клиентское приложение или компонент (включая ASP, ASP.NET, DCOM и NT Services), поскольку Office может демонстрировать нестабильное поведение и / или тупиковую ситуацию при запуске Office в этой среде.

1 голос
/ 06 ноября 2019

Возможно ли выполнить офисную автоматизацию без установки Microsoft Office на сервере?

Нет, это невозможно. Вместо этого вы можете рассмотреть возможность использования Open XML SDK , если вы имеете дело только с открытыми документами XML. В противном случае вы можете рассмотреть возможность использования любых сторонних компонентов, предназначенных для выполнения на стороне сервера, например, Aspose.

В статье Замечания по серверной автоматизации Office говорится следующее:

Все текущие версии Microsoft Office были разработаны, протестированы и настроены для работы в качестве продуктов конечного пользователя на клиентской рабочей станции. Они предполагают наличие интерактивного рабочего стола и профиля пользователя. Они не обеспечивают уровень повторного входа или безопасности, который необходим для удовлетворения потребностей серверных компонентов, предназначенных для автоматической работы.

В настоящее время Microsoft не рекомендует и не поддерживает автоматизацию Microsoft Office. приложения из любого автоматического неинтерактивного клиентского приложения или компонента (включая ASP, ASP.NET, DCOM и NT Services), так как Office может демонстрировать нестабильное поведение и / или тупиковую блокировку при запуске Office в этой среде.

Если вы создаете решение, которое выполняется в контексте на стороне сервера, вы должны попытаться использовать компоненты, которые были сделаны безопасными для автоматического выполнения. Или вы должны попытаться найти альтернативы, которые позволяют хотя бы части кода работать на стороне клиента. Если вы используете приложение Office из серверного решения, приложению не хватит многих необходимых возможностей для успешной работы. Кроме того, вы будете рисковать стабильностью вашего общего решения.

...