Комментарии 3
Я много слышал про макровирусы, но это видео меня просто удивило! Статью сохраню. :)
Здравствуй, Word.Interop, давно не виделись. Сразу небольшой совет всем к статье — не используйте это в сервером окружении. Это написано на сайте MS, но на stackoverflow все говорят "плюй и используй, будет проще". Не будет.
- Зависания при работе с несколькими инстансами.
- Тонна недокументированных ошибок в коде скопипащенном из MSDN вида "Com ошибка, что-то сломалось, насяльника"
- Работа с dynamic-ами, т.к. возможно несколько версий office на компьютере у пользователя и надо подгружать библиотеку динамически по версии офиса прописанной в реестре.
- Куча проблем с DCOM config-ом в корпоративных сетях.
- Доустановка MS Online Services, отсутствие которых тоже приводит к недокументированным ошибкам.
- Любой алерт вида "документ защищенный", "есть изменения, сохранить?", "файл создан в старой версии, обновить?" приводит к рестарту процесса, т.к. через Com модель к этому алерту у вас нет доступа. И вы должны либо не допустить его появления, либо если появился — то всё, ничего не сделаешь, грохай процесс.
- Поднятие UI сеанса на сервере, проблемы с правами.
- и опять же зависаниями "RPC unavailable" Word без причины.
Основная беда — все ошибки недокументированны, невоспроизводимы и несодержательны. Наиболее частая ситуация, которую вы будете получать — процесс Word-а висит на сервере не закрытым, но уже без UI и не откликается, в логе скупой "RPC server unavailable" — живи с этим.
Применили решение послушавшись stackoverflow, задача была достаточно сложной — сравнение и объединение нескольких файлов по сложному алгоритму с учетом рецензирования несколькими людьми, примечаний, колонтитулов, таблиц и т.п.
В итоге оказалось проще просто продублировать все механизмы MS на OpenXML, чем заставить работать Interop. Спустя несколько потерянных месяцев трудозатрат всё было переписано на OpenXML — работает стабильно и значительно быстрее.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Microsoft Office Automation: Еще одна лазейка для макровируса