Ошибка выполнения сервера (исключение из 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) Запустите dcomcnfg open Сервисы компонента

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

3) Найдите “приложение Microsoft Excel”.

4) Чтобы открыть диалоговое окно “Свойства”

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

6) “Разрешения запуска и активации, настройки разрешений, добавлены разрешения – Идентификация выполняется под пользователем Adminstrator (Этот пользователь), Интерактивный пользователь и запуск пользователей

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

2.
Изменена сборка проекта, который преобразует файл .xls из “Любой процессор” в “x86” на моем локальном компьютере и опубликовал эту библиотеку на сервере.

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

Ответ №1

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

Откройте свойства, выберите вкладку “Идентификация” и выберите интерактивного пользователя.

Ответ №2

Такая же проблема была решена для меня, “разрешив взаимодействие с рабочим столом” для службы. (в утилите tomcat6w config на вкладке “Вход в систему” )

Ответ №3

Попробуйте добавить метод Thread.Sleep, например Thread.Sleep(2000) в течение 2 секунд после workBook.open и workBook.SaveAs два метода. Если ваш файл Excel имеет много форматов, попробуйте продлить еще несколько секунд.

Оцените статью
TechArks.Ru
Добавить комментарий