Доступ к объектной модели Office Word через asp.net приводит к «сбой из-за следующей ошибки: 80070005 Доступ запрещен».

Я разработал веб-сайт, который позволяет пользователям загружать офисные документы, а затем использует объектную модель офиса для преобразования документа в файл HTML, который затем отображается в iFrame.

Я, конечно, включил ссылки на Office.interop.word, и этот сайт отлично работает на моей машине разработки. Когда я загрузил его на свой рабочий сервер, сайт работает нормально, пока я не попытаюсь загрузить документ. Сначала я получил аналогичную ошибку, в которой говорилось, что «COM-объект не зарегистрирован». Я понял, что Word не установлен на моем рабочем сервере. Итак, я установил слово, и теперь , когда сервер пытается получить доступ к объектной модели слова, я получаю следующую ошибку:

Получение фабрики классов COM для компонента с CLSID {000209FF-0000-0000-C000-000000000046} не удалось из-за к следующей ошибке: 80070005 Доступ запрещен. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))

Я поискал в реестре соответствующий CLSID и нашел соответствующую папку. Я добавил полный контроль к учетной записи IUSR_, и из-за постоянства ошибки я в конечном итоге добавил полный контроль для «всех» и обеспечил наследование этих разрешений до остальной части папки.Затем я добавил полный контроль над IUSR_ и снова, в конце концов, добавил полный контроль для «всех» в свою папку Microsoft Office.

Я не знаю, какие еще разрешения нужно предоставить и где, чтобы эта ошибка «Доступ запрещен» исчезла. Я, должно быть, даю их не в том месте, потому что, насколько я знаю, я не могу быть более снисходительным, чем «Все» «Полный контроль».

Может ли кто-нибудь пролить свет?

49
задан John Saunders 6 March 2013 в 07:25
поделиться

1 ответ

Посмотрите в средстве просмотра событий, в разделе Журналы Windows, Система, на сервере, на котором установлено Word. Видите ли вы зарегистрированное событие, которое выглядит примерно так:

Разрешение по умолчанию для компьютера настройки не разрешают локальную активацию разрешение для COM-сервера приложение с CLSID {148BEE7F-6123-41EE-8CCA-E390902BD0D8} пользователю SomeMachine\SomeUser SID (S-1-5-21-483881670-2168941642-1987552629-1003) с адреса LocalHost (с использованием LRPC). Это разрешение безопасности может быть изменено с помощью служб компонентов административный инструмент.

Если это так, запустите DCOMCNFG.EXE и перейдите в «Службы компонентов», «Компьютеры», «Мой компьютер» (или любое другое имя), «Конфигурация DCOM» (и вы можете просто ответить «Нет», если вас спросят, хотите ли вы что-то исправить) и если сообщение журнала событий относится к приложению, затем найдите его по имени в сообщении журнала событий, здесь по имени элемента, и если сообщение журнала событий предназначено для CLSID (как в приведенном выше примере), затем найдите его его CLSID "{148B...}" (это просто случайный CLSID, который я вставил - возможно, он будет соответствовать вашему 000209FF... выше), и выберите Дополнительные действия... Свойства на вкладке Безопасность.

Здесь вы можете выбрать [x] Настроить, а затем Изменить, чтобы добавить разрешение для соответствующей учетной записи пользователя на активацию и доступ к требуемому приложению или классу DCOM.

Это всего лишь предположение, но попробуйте его или что-то в этом роде (например, предоставление доступа к CLSID через DCOMCNFG).

12
ответ дан 7 November 2019 в 11:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: