Подтвердить что ты не робот

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

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

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

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

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

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

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

4b9b3361

Ответ 1

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

  • В командной строке введите DCOMCNFG
  • Службы компонентов → Компьютеры → Мой компьютер → Конфигурация DCOM
  • Найдите "Документ Microsoft Word 97 - 2003" (если он отсутствует, проверьте, не является ли ваше Word также 64-разрядным (если ваша Windows))
  • Щелкните правой кнопкой мыши → Свойства
  • Перейдите на вкладку "Безопасность" и "Редактируйте" переключатели "Настроить", чтобы IIS_IUSRS мог иметь права на запуск и доступ.
  • Перейдите в "Идентификатор табуляции" и выберите "Интерактивный пользователь"
  • Применить изменения и повторить попытку
  • Если все это не удается, перейдите также к вкладке "Общие" и в раскрывающемся списке "Уровень аутентификации" выберите "Нет".

Ответ 2

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

  • В командной строке введите DCOMCNFG
  • Разверните консольный корневой каталог > Служба компонентов > Компьютеры, щелкните правой кнопкой мыши Мой компьютер и выберите Свойства
  • В вкладке "Безопасность COM" > "Разрешения запуска и активации" нажмите "Изменить" по умолчанию
  • Добавить пользователя (например, IIS_IUSRS) или службу
  • Проверить разрешить локальный запуск и локальную активацию

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

Ответ 3

Посмотрите в средстве просмотра событий в разделе "Журналы 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 Config (и вы можете просто ответить "Нет", если он спрашивает, хотите ли вы что-либо исправить), и если сообщение журнала событий для приложения, затем найдите его по имени в сообщении журнала событий, здесь по имени элемента, и если сообщение журнала событий для CLSID (например, пример выше), найдите его с помощью CLSID "{ 148B...}" (это просто случайный CLSID, в который я вставил - возможно, он будет соответствовать вашему 000209FF... выше) и выберите "Дополнительные действия... Свойства" на вкладке "Безопасность".

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

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

Ответ 4

У меня были трудности с этим, используя принятый ответ, потому что запись 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-битного и позволяет выполнять шаги, описанные в принятом ответе. Если это все еще не работает, статья также объясняет ряд других возможных обходных путей.

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

Ответ 5

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

В 64-битной системе с 32-разрядным Office попробуйте следующее:

  • Элемент списка
  • Начало
  • Run
  • ММС-32
  • Файл
  • Добавить Удалить оснастку
  • Компонентные службы
  • Добавить
  • OK
  • Корень консоли
  • Компонентные службы
  • Компьютеры
  • Мой компьютер
  • Конфигурация DCOM

после этого

  • Найдите "Документ Microsoft Word 97 - 2003" (если он отсутствует, проверьте, ваше слово также 64-битное (если ваша Windows))
  • Щелкните правой кнопкой мыши → Свойства
  • Перейдите на вкладку "Безопасность" и отредактируйте переключатели "Настроить", чтобы IIS_IUSRS могут иметь права на запуск и доступ.
  • Перейдите в вкладку Идентификация и выберите "Интерактивный пользователь" Применить изменения и повторите попытку.
  • Если все это не удается, перейдите также на вкладку "Общие" и в "Аутентификация Уровень "выберите" Нет ".