Исключение вызывает Excel.Interop - PullRequest
0 голосов
/ 01 ноября 2018

У меня возникла производственная проблема при открытии книги Excel. Выдается исключение:

Не удалось получить фабрику класса COM для компонента с CLSID {00024500-0000-0000-C000-000000000046} из-за следующей ошибки: 80080005.

Подробности журнала ошибок просмотра событий:

Log Name:      Application
Source:        ASP.NET 2.0.50727.0
Date:          01/11/2018 11:50:32 a.m.
Event ID:      1309
Task Category: Web Event
Level:         Warning
Keywords:      Classic
User:          N/A
Computer:      XXXXX
Description:
Event code: 3005 
Event message: An unhandled exception has occurred. 
Event time: 01/11/2018 11:50:32 a.m. 
Event time (UTC): 01/11/2018 02:50:32 p.m. 
Event ID: 6ab432cf79584f7a96bb12defe163827 
Event sequence: 849 
Event occurrence: 17 
Event detail code: 0 

Application information: 
    Application domain: /LM/W3SVC/1/ROOT-2-131855513563546112 
    Trust level: Full 
    Application Virtual Path: / 
    Application Path: C:\inetpub\wwwroot\Servicio\ 
    Machine name: XXXXX 

Process information: 
    Process ID: 4460 
    Process name: w3wp.exe 
    Account name: IIS APPPOOL\Servicio 

Exception information: 
    Exception type: COMException 
    Exception message: Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80080005. 

Request information: 
    Request URL: http://servicio.honda.com.ar/xxxx.aspx 
    Request path: /xxxx.aspx 
    User host address: 10.138.204.69 
    User: XXXX.                                                                                      |XX|0                             |0|1|652 
    Is authenticated: True 
    Authentication Type: Forms 
    Thread account name: IIS APPPOOL\Servicio 

Thread information: 
    Thread ID: 15 
    Thread account name: IIS APPPOOL\Servicio 
    Is impersonating: False 
    Stack trace:    at IngresoServicio.Upload() in c:\inetpub\wwwroot\xxx\xxxx.aspx.cs:line 131
   at IngresoServicio.ImageButtonImportar_Click(Object sender, ImageClickEventArgs e) in c:\inetpub\wwwroot\xxx\xxxx.aspx.cs:line 63
   at System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e)
   at System.Web.UI.WebControls.ImageButton.RaisePostBackEvent(String eventArgument)
   at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Я следую этим шагам «Получение фабрики классов COM для компонента .... ошибка: 80070005 Доступ запрещен». (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED)) , но в любом случае выдается ошибка.

Что мне не хватает, пожалуйста?

С наилучшими пожеланиями

1 Ответ

0 голосов
/ 01 ноября 2018

Похоже, вы пытаетесь использовать автоматизацию Excel на сервере. Это неподдерживаемый вариант использования. Фактически, это было испытано и провалилось так много раз так много людей, что ответ на этот вопрос хорошо известен - НЕ АВТОМАТИЗИРУЙТЕ ОФИСНЫЕ ПРОДУКТЫ НА СЕРВЕРЕ. КОГДА-ЛИБО. СРОК. Это официальный ответ Microsoft и сообщества разработчиков. Посмотрите на инструменты, которые могут создавать, читать или манипулировать документами в виде файлов данных, такие как Open XML SDK . (Если вы собираетесь использовать Open XML SDK, я настоятельно рекомендую также загрузить инструмент повышения производительности при загрузке SDK .)

...