Получение COM-класса factory для компонента не выполнено
Я использую объект excel (COM-компонент) для обработки excel. Он отлично работает на моем ПК, но когда я развертываю приложение в нашей интрасети, я получаю эту ошибку:
Извлечение COM-класса factory для компонента с CLSID {00024500-0000-0000-C000-000000000046} не удалось из-за следующей ошибки: 80070005
Я использую проверку подлинности Windows и выдачу = true в моем web.config
.
Я сделал все настройки в службе компонентов, но все равно дает ту же ошибку.
Пожалуйста, помогите
Ответы
Ответ 1
У меня была такая же ошибка при развертывании моего приложения. У меня есть решение с этого сайта: Компонент с CLSID XXX не удалось из-за следующей ошибки: 80070005 Доступ запрещен
Вот это решение:
-
В DCOMCNFG щелкните правой кнопкой мыши Мой компьютер и выберите свойства.
-
Выберите вкладку COM Securities.
-
В Разрешения доступа нажмите Изменить значения по умолчанию и добавьте к нему службу сети и дайте ему Разрешить локальный доступ. Сделайте то же самое для < Machine_name > \Users.
-
В Разрешения для запуска и активации нажмите Изменить значения по умолчанию и добавьте к ним службу сети и дайте ей Локальный запуск и Локальная активация. Сделайте то же самое для < Machine_name > \Users.
* Я использовал проверку подлинности форм.
Ответ 2
Еще одна проблема, которую вам может потребоваться, если вы используете Windows 2008 Server с IIS7. Сервер может сообщить о следующей ошибке:
Microsoft Office Excel не может получить доступ к файлу 'c:\temp\test.xls'. Существует несколько возможных причин:
- Имя файла или путь не существует.
- Файл используется другой программой.
- Книга, которую вы пытаетесь сохранить, имеет то же имя, что и текущая открытая книга.
Решение опубликовано здесь (посмотрите текст, отправленный пользователем Ogawa): http://social.msdn.microsoft.com/Forums/en-US/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91?prof=required
Ответ 3
Вы также получите эту ошибку, если в системе есть устаревшие процессы EXCEL.EXE
(используйте для этого их использование вкладку Task Manager --> Processes
).
Убейте все эти экземпляры, и приложение будет работать нормально.
Ответ 4
Это сделало трюк для меня:
(решение из msdn forum)
goto Controlpanel → Административные средства → Службы компонентов → компьютеры → myComputer → DCOM Config → Приложение Microsoft Excel.
щелкните правой кнопкой мыши, чтобы получить диалог свойств. Откройте вкладку "Безопасность" и соответствующим образом настройте разрешения.
В "Разрешении запуска и приложения" выберите "Настроить", "Изменить". Добавьте пользователя/группу, вызывающую приложение.
Ответ 5
В случае, если это помогает кому-то:
Я запускаю 64-разрядную версию Windows 7, и я хотел зарегистрировать 32-разрядную dll.
Сначала я попытался: regsvr32 и получил следующую ошибку:
System.Runtime.InteropServices.COMException(0x80040154): Извлечение COM-класса factory для компонента с CLSID {A1D59B81-C868-4F66-B58F-AC94A4A7982E} не удалось из-за следующей ошибки: 80040154.
Затем я попытался добавить приложение через Службы компонентов (Run- > DCCOMCNFG) (http://www.justskins.com/forums/difference-registering-dll-using-regsvr32-and-component-services-17280.html) и получил следующую ошибку:
System.UnauthorizedAccessException: Извлечение COM-класса factory для компонента с CLSID {A1D59B81-C868-4F66-B58F-AC94A4A7982E} не удалось из-за следующей ошибки: 80070005.
Есть много ссылок на его решение, но то, что сработало для меня, было:
Корень консоли → Службы компонентов → Компьютеры → Мой компьютер → Приложения COM + → - > Свойства: вкладка "Безопасность": авторизация: снимите флажок "Обеспечить проверку доступа для этого приложения".
Я не знаю, что он делает.
Ответ 6
CLSID, который вы описываете, предназначен для Microsoft.Office.Interop.Excel.ApplicationClass. Этот класс в основном запускает excel.exe через InprocServer32. Если вы его не установили, он вернет сообщение об ошибке, которое вы получили выше.
Ответ 7
Для IIS 8 я сделал в основном то же самое, что и Monic. Im запускает мое приложение как собственный пул приложений на машине x64. 1. В DCOMCNFG щелкните правой кнопкой мыши Мой компьютер и выберите свойства.
2.Выберите вкладку COM Securities.
3. В разрешениях доступа нажмите "Изменить значения по умолчанию" и добавьте iis apppool\myapp к нему и дайте ему Разрешить разрешение на локальное подключение. Сделайте то же самое для iis apppool\myapp
4. В разрешениях запуска и активации нажмите "Изменить значения по умолчанию" и добавьте iis apppool\myapp к нему и дайте ему разрешение "Локальный запуск" и "Локальная активация". Сделайте то же самое для iis apppool\myapp.
Кроме того, мне пришлось сделать папки, выделенные в C:\Windows\SysWOW64\config\systemprofile\Desktop, и предоставить права на чтение\запись для iis apppool\myapp также
Ответ 8
Я могу понять вашу боль. В моем случае ошибка была решена путем выполнения следующих шагов:
- Пуск > Выполнить > dcomcnfg.
- Откройте папку DCOM Config и выберите "Службы компонентов" > "Компьютеры" > "Мой компьютер" > "Конфигурация DCOM".
- Выберите "Документ Microsoft Office Word 97 - 2003" / "Приложение Microsoft Excel" и перейдите к его свойствам.
- На вкладке "Безопасность" необходимо настроить "Разрешения на запуск и активацию" ( "Авторизованный пользователь" ).
- Теперь перейдите в IIS и выберите пул приложений в Интернете и перейдите к его Расширенным настройкам и выберите "СЕТЕВОЕ ОБСЛУЖИВАНИЕ" в качестве пользователя идентификации.
Надеюсь, что это поможет.