Получение фабрики COM-классов для компонента с CLSID {000209FF-0000-0000-C000-000000000046}

Я использую Windows XP_SP_3 и IIS 5 (локальный хост), создаю сайт с asp.net4 и использую этот код:

Application appClass = new Application();
Document wordDoc = appClass.Documents.Add(Server.MapPath("~") + @"Files\tmp.docx");
wordDoc.SaveAs(@"e:\hp\Files\" + TextBox1.Text + ".docx");
wordDoc.Close();

если запустить сайт с VS2010, все в порядке. но при запуске с IIS 5 (локальный хост) покажите эту ошибку:

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

Описание: необработанное исключение произошло во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительных сведений об ошибке и ее происхождении в коде.

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

ASP.NET не авторизован для доступа к запрошенному ресурсу. Рассмотрите возможность предоставления прав доступа к ресурсу удостоверению запроса ASP.NET. ASP.NET имеет базовое удостоверение процесса (обычно {MACHINE} \ ASPNET в IIS 5 или сетевая служба в IIS 6 и IIS 7, а также настроенное удостоверение пула приложений в IIS 7.5), которое используется, если приложение не олицетворяет себя. Если приложение олицетворяет через, удостоверением будет анонимный пользователь (обычно IUSR_MACHINENAME) или аутентифицированный пользователь запроса.

Чтобы предоставить ASP.NET доступ к файлу, щелкните файл правой кнопкой мыши в проводнике, выберите «Свойства» и перейдите на вкладку «Безопасность». Щелкните Добавить, чтобы добавить соответствующего пользователя или группу. Выделите учетную запись ASP.NET и установите флажки для желаемого доступа.

Ошибка источника:

Необработанное исключение было создано во время выполнения текущего веб-запроса. Информацию о происхождении и местонахождении исключения можно определить с помощью трассировки стека исключений ниже.


Я открываю Component Service ›Computer› щелкните правой кнопкой мыши в My Computer ›выберите Properties› COM Sucrity ›Launch and Activation ...› Edit Default ›Add› Advanced ›

Я не нахожу пользователя IIS (IIS_IUSRS). так что выберите ASP.NET и ОК и проверьте локальный запуск и удаленный запуск, локальную активацию и удаленную активацию.

оставьте систему и снова запустите сайт с iis5. но снова покажите предыдущую ошибку!


person Ahmad Kazemi    schedule 15.12.2012    source источник
comment
Вы в тупике. support.microsoft.com/kb/257757   -  person Lex Li    schedule 15.12.2012


Ответы (2)


  1. Перейдите к Панель управления -> Администрирование -> Службы компонентов.
  2. Разверните дерево, щелкнув «Службы компонентов» -> «Компьютеры» -> «Мой компьютер» -> «Конфигурация DCOM».
  3. Поиск CLSId 00020906-0000-0000-C000-000000000046 (для приложения Word) Примечание. Если поиск CLSId не находит, выполните поиск с помощью «Приложение Windows Word».
  4. Выбрав 00020906-0000-0000-C000-000000000046 этот CLSId, щелкните правой кнопкой мыши на «Свойства».
  5. В области «Свойства» нажмите ВКЛАДКУ «Безопасность».
  6. Выберите вариант «Настроить» из всех (Разрешения на запуск и активацию, Разрешения на доступ, Разрешения на конфигурацию).
  7. Добавьте новое имя как СЕТЕВАЯ СЛУЖБА во всех и Разрешите все разрешения для этого имени.
  8. Перейдите на вкладку «Идентификация» в той же области свойств, выберите вариант Этот пользователь, а затем добавьте имя пользователя (который является администратором этого компьютера) и пароль. Нажмите Применить, ОК.
  9. Обновите службы компонентов и проверьте, работает ли ваше приложение нормально.
person Vikram Gharge    schedule 29.04.2014
comment
Это работает, интересно, я хочу знать, почему CLSID, указанный в информации об ошибке, не соответствует этому идентификатору ... - person Jarvan; 14.07.2016
comment
Если Search CLSId не находит, выполните поиск с помощью приложения Windows Word. Поиск CLSId зависит от версии Windows. - person Vikram Gharge; 23.11.2017
comment
Да, CLSId зависит от версии Windows. Необходимо на основе версии Windows. - person Vikram Gharge; 25.09.2018

Запустите информационные службы Интернета (IIS). Щелкните правой кнопкой мыши виртуальный каталог приложения и выберите пункт «Свойства». Щелкните вкладку Безопасность каталога. В разделе Анонимный доступ и управление проверкой подлинности щелкните Изменить. Убедитесь, что флажок Анонимный доступ не установлен и что установлен только флажок Встроенная проверка подлинности Windows. Настройте ASP.NET для использования проверки подлинности Windows с олицетворением, используйте следующую конфигурацию

...
<authentication mode="Windows"/>
<identity impersonate="true"/>
...

person Raj    schedule 26.11.2013