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

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

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

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

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

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

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

Ответы [ 5 ]

59 голосов
/ 26 июля 2011

Хорошо, я решил эту проблему с помощью следующих шагов:

  1. В командной строке поставить DCOMCNFG
  2. Разверните Корень консоли> Служба компонентов> Компьютеры, щелкните правой кнопкой мыши Мой компьютер и выберите Свойства
  3. На вкладке «Безопасность COM»> «Разрешения на запуск и активацию» нажмите «Изменить по умолчанию»
  4. Добавить пользователя (например, IIS_IUSRS) или службу
  5. Установите флажок Разрешить локальный запуск и локальную активацию

Тогда Excel, Word и другие приложения могут работать, удачи.

39 голосов
/ 10 октября 2014

Это сработало для меня:

  1. В командной строке введите DCOMCNFG
  2. Службы компонентов -> Компьютеры -> Мой компьютер -> Конфигурация DCOM
  3. Найдите «Документ Microsoft Word 97 - 2003» (если он отсутствует, проверьте, является ли Word также 64-разрядным (если у вас Windows), если он не запущен mmc comexp.msc /32 вместо DCOMCNFG на шаге 1, как предложено Darkseal здесь )
  4. Щелкните правой кнопкой мыши -> Свойства
  5. Перейдите на вкладку Безопасность и отредактируйте переключатели «Настройка», чтобы IIS_IUSRS мог иметь права на запуск и доступ
  6. Перейдите на вкладку «Идентичность» и выберите «Интерактивный пользователь»
  7. Применить изменения и повторить попытку
  8. Если все это не удалось, перейдите также на вкладку «Общие» и в раскрывающемся списке «Уровень проверки подлинности» выберите «Нет».
12 голосов
/ 25 августа 2010

Посмотрите в окне «Просмотр событий» в разделе «Журналы 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).

5 голосов
/ 02 мая 2017

У меня были трудные времена, чтобы понять это, используя принятый ответ, потому что запись Microsoft Word 97 - 2003 Document не была указана среди элементов конфигурации DCOM. Я нашел решение в этом блоге Technet , где они правильно объяснили проблему:

Важно отметить, что если вы устанавливаете 32-разрядную версию Microsoft Office на 64-битная машина, вам может понадобиться использовать 32-битный диспетчер конфигурации DCOM для просмотра программ в зависимости от вашей операционной системы.

В операционных системах x64 от Windows XP до Windows Server 2008 64-разрядная версия DCOMCNFG.EXE неправильно настраивает 32-разрядную версию Приложения DCOM для удаленной активации. Такое поведение вызывает компоненты, которые предназначены для удаленной активации активируется локально. Такое поведение не происходит в Windows 7 и Windows Server 2008 R2 и более поздние версии.

Ref .: http://msdn.microsoft.com/en-us/library/windows/desktop/ms678426(v=vs.85).aspx

А также предложил использовать следующую команду командной строки (вместо DCOMCNFG) в качестве эффективного исправления:

mmc comexp.msc /32

Что заставляет загружать 32-битный менеджер конфигурации DCOM вместо 64-битного и позволяет выполнять шаги, описанные в принятом ответе. Если это по-прежнему не работает, в статье также объясняется ряд других возможных решений.

Для получения дополнительной информации по этой теме, вы также можете прочитать это сообщение в моем блоге.

1 голос
/ 18 апреля 2016

Если вы не можете найти приложение Microsoft Word в DCOM

В 64-битной системе с 32-битным Office попробуйте это:

  1. Элемент списка
  2. Начало
  3. Run
  4. ММС-32
  5. Файл
  6. Добавить Удалить оснастку
  7. Услуги компонентов
  8. Добавить
  9. OK
  10. Корень консоли
  11. Услуги компонентов
  12. Компьютеры
  13. Мой компьютер
  14. DCOM Config

после этого

  1. Найти «Документ Microsoft Word 97 - 2003» (если он отсутствует, проверьте, ваше слово также 64-битное (если у вас Windows))
  2. Щелкните правой кнопкой мыши -> Свойства
  3. Перейдите на вкладку Безопасность и отредактируйте переключатели «Настроить» так, чтобы IIS_IUSRS может иметь права на запуск и доступ
  4. Перейдите на вкладку Identity и выберите «Интерактивный пользователь». Применить изменения. и попробуйте еще раз
  5. Если все это не удалось, перейдите также на вкладку «Общие» и в «Аутентификация» Выпадающий уровень выберите «Нет».
...