Недавно я провёл онлайн-проект по группированию работ. Основные функции занимаются набором слов, предпросмотром и написанием тестовых работ. Когда речь идёт о словесных операциях в начале, на ум приходит на ум компонент офисного COM для работы с Word. На написание кода для всей системы ушло около двух недель. Потом я начал многократно тестировать, и локально чувствовал себя хорошо, смог плавно сгенерировать тестовую работу в Word, и производительность была нормальной. Так что я не мог дождаться, когда выпустил его на сервер.
Первый — компонент с CLSID {000209FF-0000-0000-C000-000000046} в заводе COM выходит из строя из-за следующей ошибки: 8000401a Система не может запустить серверный процесс из-за неправильного идентификатора конфигурации. Пожалуйста, проверьте имя пользователя и пароль. (Исключение из HRESULT:0x8000401A).
Во-первых, все эти проблемы вызваны правами, и решение — просто настроить права. Полезно не только для Excel и Word, но и для всех офисных продуктов.
Чтобы перейти к сути, сначала введите dcomcnfg при запуске, откройте менеджер компонентных сервисов >component service->my computer->DCOM-> найдите соответствующий документ Microsoft Excel/Microsoft Word 97-2003, а затем кликнете правой кнопкой мыши по атрибуту для активации разрешения на загрузку — этого достаточно, чтобы получить доступ к OK. -------- нет проблем, проблема решена.
Давайте поговорим о второй ситуации — «Проблема производительности»: поскольку наша система — это следующая подсистема нашего сайта. Так что есть определённая база пользователей. Система получила доступ для большого числа пользователей сразу после её запуска. Сначала в день группировалось четыре-пятьсот статей, и постепенно их объём становился всё больше, что стало началом проблем с системой. Во-первых, в процессе существует множество winWord.exe процессов. Это не может закончиться. Хотя системный код содержит процесс выхода и перерабатывает ресурсы, проблема так и не решается. В результате большого количества процессов winword.exe сервер замедляется. Для этого компонента он должен требовать особенно много памяти.
Решить эту проблему невозможно. Последним злоумышленником было написание тайминг-сервиса, который убил процесс выигровки, который не работал. Это устраняет симптомы, но не коренную причину. 、
Здесь я хочу сказать, что Microsoft Office — это настольная офисная программа, разработанная в основном для обычных пользователей, обладающая богатыми элементами пользовательского интерфейса и представляет собой набор чисто локального или клиентского программного обеспечения. Интерфейс автоматизации Word в первую очередь предназначен для облегчения вызовов приложений через окна. Например, нативные приложения, разработанные Delphi, VB, C#, Winform и др. Хотя возможно заставить Visible быть ложным, и Word может работать в серверном коде, это всё равно вызывает множество сложных проблем.
1. ASP.NET основан на архитектуре B/S. В архитектуре B/S пользовательский доступ осуществляется одновременно, что означает, что N пользователей часто одновременно отправляют запросы на серверную страницу. В этом случае автоматизированный вызов Word часто время от времени отключается.
2. Из-за работы скрытого интерфейса некоторые интерфейсы, использующие интерфейсы, которые можно успешно вызвать в оконной программе, не будут вызывать на серверной стороне или даже вылетять, что часто приводит к неисправным процессам.
3. Поскольку Word — это сложная настольная программа, которая не соответствует стандартам общих веб-сервисов по простоте и эффективности, она медленно запускается на серверной стороне и потребляет много ресурсов (процессор, память), особенно не может поддерживать большое количество пользователей одновременно, и ресурсы быстро исчерпаются.
4. Большинство разработчиков относительно мало знакомы с COM-технологией, и при программировании и вызове интерфейса Word часто возникают ошибки кода, и трудно проверить эту проблему, что часто приводит к неисправности процессов. Мёртвые процессы Word не только потребляют ресурсы сервера, но и часто приводят к тому, что страницы сервера не могут создавать новые объекты автоматизации Word и продолжают работать. Некоторые пользователи предложили решение мёртвого процесса: программирование для уничтожения мёртвого процесса Word, что является практикой лечения симптомов, но не коренной причины; мёртвый процесс Word исчез, но аномальное закрытие Word приведёт к тому, что многие ресурсы не будут вовремя выпущены. Как долго такой веб-сервер прослужит — трудно сказать.
Для решения этих проблем после тщательного исследования и сравнения автор обнаружил, что в Интернете есть компонент aspose.words, который полностью устраняет вышеуказанные проблемы и рекомендуется поделиться с вами.
Ниже я поделюсь с вами некоторыми рабочими кодами компонента aspose.words в надежде, что он будет полезен тем, кто в этом нуждается
Оригинальная ссылка: http://blog.csdn.net/fraing/article/details/8989736
|