Доступ к объектной модели 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.
Я не знаю, какие другие разрешения предоставить, и где для того, чтобы эта ошибка "Отказано в доступе" ушла. Я должен предоставлять их не в том месте, потому что Я знаю, что я не могу быть более правдоподобным, чем "Все" "Полный контроль".
Может ли кто-нибудь пролить свет?
Ответы
Ответ 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 могут иметь права на запуск и доступ.
- Перейдите в вкладку Идентификация и выберите "Интерактивный пользователь" Применить изменения
и повторите попытку.
- Если все это не удается, перейдите также на вкладку "Общие" и в "Аутентификация
Уровень "выберите" Нет ".