it-roy-ru.com

Ошибка выполнения сервера (исключение из HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE))

Я пытаюсь преобразовать файл .xls в файл .xlsx на стороне сервера, используя класс Microsoft.Office.Interop.Excel.Workbook следующим образом:

 workBook.SaveAs("FILENAME_HERE", XlFileFormat.xlOpenXMLWorkbook, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, Microsoft.Office.Interop.Excel.XlSaveConflictResolution.xlLocalSessionChanges, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

и я получаю следующую ошибку:

Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)). : System.Runtime.InteropServices.COMException (0x80080005): Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)).
   at System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType)
   at System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(RuntimeType serverType)
   at System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(RuntimeType serverType, Object[] props, Boolean bNewObj)
   at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
   at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
   at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
   at System.Activator.CreateInstance(Type type, Boolean nonPublic)
   at System.Activator.CreateInstance(Type type)
   at CALLING_METHOD_IN_MY_LIBRARY_HERE...

Проблема в том, что эта ошибка возникает только на промежуточном сервере; на моей локальной машине все работает нормально. 

Вещи, которые я пробовал на промежуточном сервере:

  1. ** 1) Запустите dcomcnfg open Службы компонентов

2) Разверните Службы компонентов »->« Компьютер »->« Мой компьютер »->« Конфигурация DCOM »

3) Найдите «Приложение Microsoft Excel».

4) Право, чтобы открыть диалоговое окно Свойства

5) Нажмите на вкладку «Безопасность»,

6) «Разрешения на запуск и активацию, настройка разрешений, добавление разрешений - идентификация выполняется под пользователем Adminstrator (этот пользователь), интерактивным пользователем и запускающими пользователями».

7). Разрешения на запуск и активацию + Разрешения на доступ + Разрешения на настройку => добавлены IIS_IUSRS + Сетевая служба с полным контролем **

2 . Изменена сборка проекта, которая преобразует файл .xls из «Any CPU» в «x86» на моем локальном компьютере и опубликовала эту библиотеку на сервере.  

Кто-то разобрался, как решить эту проблему? Я борюсь за исправление этой проблемы в течение 2 дней. 

23
Tamas Ionut

Использование DCOMCNFG.exe. Откройте его и перейдите: Службы компонентов -> Компьютеры -> Мой компьютер -> Конфигурация DCOM -> Приложение Microsoft Excel

Откройте свойства, выберите вкладку «Удостоверение» и выберите интерактивного пользователя.

22
Vladimir Shiyanov

Я нашел эту статью, в которой более подробно говорится об этой проблеме. Если это поможет, Ошибка «80080005 Выполнение сервера не удалось (Исключение из HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE))» »может произойти по следующим причинам:

  1. Машина имеет высокую загрузку ЦП, и процесс занимает много времени для запуска И не может выполнить CoRegisterClassObjects () менее чем за 120 секунд.
  2. COM-сервер не регистрируется для правильных идентификаторов классов.
  3. COM-сервер в настоящее время останавливается, и существует состояние гонки Между CoCreateInstance и частью остановки COM-сервера.
  4. Существует проблема безопасности в способе запуска COM-сервера .__ (кажется, что на этой странице предлагаются неверные пароли или отсутствует привилегия «Войти как пакетное задание» для COM-серверов «Запуск от имени», но anyway Я бы предложил повторно проверить эту информацию для вашей конкретной конфигурации)

https://blogs.msdn.Microsoft.com/adioltean/2005/06/24/when-cocreateinstance-returns-0x80080005-co_e_server_exec_failure/

2
ChiragMM

Я исправил эту проблему с помощью этого решения: Щелкните правой кнопкой мыши Службы компонентов/Компьютеры/Конфигурация DCOM/Microsoft Word97 - 2003 Documentproperties/General Tab

установить уровень аутентификации: нет

1
Ghadir Farzaneh

Та же проблема была решена для меня «разрешением взаимодействия с рабочим столом» для сервиса. (в инструменте конфигурации Tomcat6w на вкладке Вход в систему)

0
Gabor