Открытие Excel с использованием Excel Interop, не работающего при развертывании в среде, вызывает & ldquo; Получение фабрики COM-класса & rdquo; вопрос [дубликат]

Я попытаюсь объяснить вам статическую вещь. Прежде всего статические переменные не принадлежат ни одному конкретному экземпляру класса. Они распознаются с именем класса. Статические методы снова не относятся к какому-либо конкретному экземпляру. Они могут получить доступ только к статическим переменным. Представьте, что вы вызываете MyClass.myMethod (), а myMethod - это статический метод. Если вы используете нестатические переменные внутри метода, как, черт возьми, он знает, какие переменные использовать? Вот почему вы можете использовать из статических методов только статические переменные. Повторяю, они НЕ принадлежат ни одному конкретному экземпляру.

22
задан Jeff Atwood 7 July 2009 в 10:46
поделиться

7 ответов

У меня была такая же ошибка, когда я развернул свое приложение. У меня есть решение с этого сайта: Компонент с CLSID XXX не удалось из-за следующей ошибки: 80070005 Доступ запрещен

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

  1. В DCOMCNFG щелкните правой кнопкой мыши Мой компьютер и выберите свойства.
  2. Выберите вкладку COM Securities.
  3. В разделе «Разрешения доступа» нажмите «Изменить значения по умолчанию» и добавьте к ней Network Service и дайте ему Разрешить разрешение на локальное подключение. Сделайте то же самое для Machine_name> \ Users .
  4. В разрешениях запуска и активации нажмите «Изменить значения по умолчанию» и добавьте Network Service к нему и дайте ему разрешение «Локальный запуск» и «Локальная активация». Сделайте то же самое для & lt; Machine_name> \ Users .

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

22
ответ дан Bruno Bieri 26 August 2018 в 16:20
поделиться
  • 1
    Это работает с Windows Server 2012 R2? – Magendran V 8 May 2015 в 11:08
  • 2
    Я не помню, какая версия системы у меня была. Вы попробовали это решение? – Monic 8 May 2015 в 13:34
  • 3
    Это сработало для меня после поиска решения около 10 часов. В других решениях упоминаются конкретные программы для изменения разрешений или изменения бинарных (dll) сборок. В этом упоминается корень (Мой компьютер) и правильный «пользовательский». +1. – P5Coder 28 November 2016 в 07:43

Это помогло мне: (решение из форума msdn )

goto Controlpanel -> Административные средства -> Службы компонентов -> компьютеры -> myComputer -> DCOM Config -> Приложение Microsoft Excel.

щелкните правой кнопкой мыши, чтобы получить диалог свойств. Goto Security и соответствующим образом настроить разрешения.

В разрешениях запуска и приложения выберите «Настроить», «Изменить». Добавьте пользователя / группу, вызывающую приложение.

3
ответ дан bubbassauro 26 August 2018 в 16:20
поделиться

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

2.Выберите вкладку «СОМ-ценные бумаги».

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

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

дополнительно мне пришлось сделать папки, выделенные в C: \ Windows \ SysWOW64 \ config \ systemprofile \ Desktop, и дать права на чтение \ запись для iis apppool \ myapp также

0
ответ дан Himilou 26 August 2018 в 16:20
поделиться

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

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

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

System.Runtime.InteropServices.COMException (0x80040154): получение фабрики COM-класса для компонента с 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 фабрика для компонента с CLSID {A1D59B81-C868-4F66-B58F-AC94A4A7982E} потерпела неудачу из-за следующей ошибки: 80070005.

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

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

2
ответ дан iguigova 26 August 2018 в 16:20
поделиться

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

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

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

0
ответ дан Ravi 26 August 2018 в 16:20
поделиться

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

Убейте все эти экземпляры, и приложение будет работать нормально.

4
ответ дан Stephan 26 August 2018 в 16:20
поделиться

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

0
ответ дан user 26 August 2018 в 16:20
поделиться
  • 1
    +1000 для сервера 2008 x64 добавить папку C:\Windows\SysWOW64\config\systemprofile\Desktop bingo !!! – dotjoe 13 September 2011 в 15:41
  • 2
    Это спасло мой день. – mike27015 10 July 2013 в 09:43
  • 3
    Да, Excel не установлен на серверной машине. Есть ли другой способ использовать Interop без установки excel на серверной машине. Я спрашиваю об этом, потому что у меня нет доступа к установке любого другого программного обеспечения на серверной машине. – Umer Farooq 11 January 2017 в 09:36
  • 4
    Я не думаю, что есть. Excel.exe похож на движок. Возможно, вам удастся создать веб-службу на другом компьютере (с Excel), а затем вызвать эту веб-службу с сервера для обработки запроса и отправки результата. Это потребует сильных навыков программирования на платформе Windows и .NET. Существуют также сторонние библиотеки для управления документами Excel. – user 11 January 2017 в 16:05
  • 5
    @UmerFarooq Как с помощью простого веб-сервиса support.microsoft.com/en-us/kb/308359 . Возврат больших данных в веб-службе msdn.microsoft.com/en-us/library/aa528822.aspx . – user 11 January 2017 в 22:02
Другие вопросы по тегам:

Похожие вопросы: