System.Runtime.InteropServices.COMException (0x800A1436)
Мы пытаемся открыть шаблон Word, который находится на общем диске, с помощью Office Interop Services в приложении MVC. Решение работает локально, но после развертывания на сервере появляется следующее сообщение:
The File was not created: System.Runtime.InteropServices.COMException (0x800A1436): This file could not be found
ApplicationPool работает под учетной записью пользователя домена, у которого уже есть разрешения на общем диске.
Любое предложение?
2 ответа
Вы можете рассмотреть возможность использования Open XML SDK для работы с документами открытого XML (.docx), см. Добро пожаловать в Open XML SDK 2.5 для Office. Или любые другие сторонние компоненты, предназначенные для выполнения на стороне сервера (например, Aspose).
В настоящее время Microsoft не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любых необслуживаемых, неинтерактивных клиентских приложений или компонентов (включая ASP, ASP.NET, DCOM и NT Services), поскольку Office может демонстрировать нестабильное поведение и / или или тупик, когда Office работает в этой среде.
Если вы создаете решение, работающее в контексте сервера, вы должны попытаться использовать компоненты, которые были сделаны безопасными для автоматического выполнения. Или вы должны попытаться найти альтернативы, которые позволяют хотя бы части кода работать на стороне клиента. Если вы используете приложение Office из серверного решения, приложению не хватит многих необходимых возможностей для успешной работы. Кроме того, вы будете рисковать стабильностью вашего общего решения. Подробнее об этом читайте в статье " Соображения для серверной автоматизации Office".
Kb257757 https://support.microsoft.com/en-us/help/257757/considerations-for-server-side-automation-of-office
Серверная автоматизация офиса не поддерживается с помощью Interop, попробуйте использовать подход на основе XML, такой как ClosedXML, который доступен в NuGet.