2009-05-19 1 views
20

Я использую объект excel (COM-компонент) для обработки excel. Он отлично работает на моем компьютере, но когда я развернуть приложение на нашем интранете я получаю эту ошибку:Извлечение фабрики COM-класса для компонента не выполнено

Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005

Я использую проверку подлинности Windows и олицетворения = верно в моем web.config.

Я выполнил все настройки службы компонентов, но все равно дает ту же ошибку.

Пожалуйста, помогите

+1

Вы нашли рабочее решение с этим вопросом? Я просто задал этот вопрос той же проблемой. Я запускаю приложение VB.Net, ** не ** Asp.Net. –

+0

неважно, мне пришлось установить .Net-функции Excel из установщика Office. Silly me –

ответ

5

Там еще один вопрос, возможно, придется обратиться, если вы используете 2008 Server Windows, с IIS7. Сервер может сообщить об ошибке:

Microsoft Office Excel не может получить доступ к файлу 'c: \ temp \ test.xls'. Есть несколько возможных причин:

  • Имя файла или путь не существует.
  • Файл используется другой программой.
  • Книга, которую вы пытаетесь сохранить, имеет то же имя, что и открытая книга.

Решение опубликовано здесь (обратите внимание на текст, публикуемую пользователем Огава): http://social.msdn.microsoft.com/Forums/en-US/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91?prof=required

+1

+1000 для сервера 2008 x64 добавить папку 'C: \ Windows \ SysWOW64 \ config \ systemprofile \ Desktop' bingo !!! – dotjoe

+0

Это спасло мой день. – mike27015

2

В случае помогает кто-то:

Я бегу Windows 7 64-бит, и я хотел зарегистрировать 32-разрядную dll.

Сначала я попробовал: regsvr32 и получил следующее сообщение об ошибке:

System.Runtime.InteropServices.COMException (0x80040154): Получение COM фабрики классов для компонента с CLSID {A1D59B81-C868-4F66-B58F-AC94A4A7982E} не удалось из-за следующей ошибки: 80040154.

Затем я попытался добавить приложение через службы компонентов (Подвижная> DCCOMCNFG) (http://www.justskins.com/forums/difference-registering-dll-using-regsvr32-and-component-services-17280.html) и получил следующее сообщение об ошибке:

System.UnauthorizedAccessException: Получение COM класса для компонента с CLSID {A1D59B81-C868-4F66-B5 8F-AC94A4A7982E} не удалось из-за следующей ошибки: 80070005.

Существует много ссылок на решение этой проблемы, но то, что сработало для меня, было: Console Root -> Услуги компонентов -> Компьютеры -> Мой компьютер -> COM + Приложения - > -> Свойства: вкладка «Безопасность»: авторизация: снимите флажок «Использовать проверки доступа для этого приложения».

Я не знаю, что он делает.

3

Это сделал трюк для меня: (решение от msdn forum)

goto Controlpanel --> Administrative tools-->Component Services -->computers --> myComputer -->DCOM Config --> Microsoft Excel Application.

right click to get properties dialog. Goto Security tab and customize permissions accordingly.

В Разрешения на запуск и приложений, выберите Настройка, Edit. Добавьте пользователя/группу, вызывающую приложение.

4

Вы также получите эту ошибку, когда есть несвежие EXCEL.EXE процессы в системе (Использование Task Manager --> Processes вкладки для просмотра этих.)

Убить все те случаи, и приложение будет работать в обычном режиме.

0

CLSID, который вы описываете, относится к Microsoft.Office.Interop.Excel.ApplicationClass. Этот класс в основном запускает excel.exe через InprocServer32. Если вы его не установили, он вернет сообщение об ошибке, которое вы получили выше.

+0

Да, Excel не установлен на серверной машине. Есть ли другой способ использовать Interop без установки excel на серверной машине. Я спрашиваю об этом, потому что у меня нет доступа к установке любого другого программного обеспечения на серверной машине. –

+0

Я не думаю, что есть. Excel.exe похож на движок. Возможно, вам удастся создать веб-службу на другом компьютере (с Excel), а затем вызвать эту веб-службу с сервера для обработки запроса и отправки результата. Это потребует сильных навыков программирования на платформе Windows и .NET. Существуют также сторонние библиотеки для управления документами Excel. – 2017-01-11 15:05:20

+0

@UmerFarooq Как с помощью простого веб-сервиса https://support.microsoft.com/en-us/kb/308359. Возврат больших данных в веб-службе https://msdn.microsoft.com/en-us/library/aa528822.aspx. – 2017-01-11 21:02:39

20

У меня была такая же ошибка, когда я развернул приложение. У меня есть решение с этого сайта: Component with CLSID XXX failed due to the following error: 80070005 Access is denied

Вот это решение:

  1. В DCOMCNFG, щелкните правой кнопкой мыши на Мой компьютер и выберите свойства.

  2. Выберите COM Securities tab.

  3. В Права доступа, нажмите Редактировать параметры по умолчанию и добавить Network Service к нему и дать ему Разрешить локальный доступ разрешения. Сделайте то же самое для < Machine_name> \ Users.

  4. В Разрешения на запуск и активации, нажмите Редактировать параметры по умолчанию и добавить Network Service к нему и дать ему Локальный запуск и Локальное разрешение активации. Сделайте то же самое для < Machine_name> \ Users.

* Я использовал проверку подлинности форм.

+0

Это работает с Windows Server 2012 R2? –

+0

Я не помню, какая версия системы у меня была. Вы попробовали это решение? – Monic

+0

Это работало для меня, после поиска решения около 10 часов. В других решениях упоминаются конкретные программы для изменения разрешений или изменения бинарных (dll) сборок. В этом упоминается корень (Мой компьютер) и правильный «пользовательский». +1. – P5Coder

0

Для IIS 8 я сделал в основном то же самое, что и Monic. Im запускает мое приложение как собственный пул приложений на машине x64. 1. В DCOMCNFG щелкните правой кнопкой мыши Мой компьютер и выберите свойства.

2.Выберите вкладку COM Securities.

3.In Права доступа, нажмите Изменить значения по умолчанию и добавьте iis apppool \ myapp к нему и дайте ему Разрешить доступ к локальному доступу. Сделайте то же самое для iis apppool \ myapp

4.В разрешениях запуска и активации нажмите «Изменить значения по умолчанию» и добавьте iis apppool \ myapp к нему и дайте ему разрешение «Локальный запуск» и «Локальная активация». Сделайте то же самое для iis apppool \ myapp.

дополнительно я должен был сделать папки, указанные в С: \ Windows \ SysWOW64 \ Config \ systemprofile \ Desktop и дают чтения \ права на запись в Iis AppPool \ MyApp также

0

Я понимаю вашу боль. В моем случае ошибка была решена путем выполнения следующих шагов:

  1. Пуск> Выполнить> dcomcnfg.
  2. Открыть папку DCOM Config и Выбрать службы компонентов> Компьютеры> Мой компьютер> Конфигурация DCOM.
  3. Выберите «Документ Microsoft Office Word 97 - 2003»/«Приложение Microsoft Excel» и перейдите к его свойствам.
  4. На вкладке «Безопасность» необходимо настроить «Разрешения на запуск и активацию» (Авторизованный пользователь).
  5. Теперь перейдите в IIS и выберите пул приложений в Интернете и перейдите к его Расширенным настройкам и выберите «СЕТЕВОЕ ОБСЛУЖИВАНИЕ» в качестве пользователя идентификации.

Надеюсь, это поможет.

Смежные вопросы