2009-05-19 27 views
20

Sto utilizzando un oggetto excel (componente COM) per la manipolazione di Excel. Funziona benissimo sul mio PC, ma quando distribuisce l'applicazione al nostro Intranet sto ottenendo questo errore:Recupero del factory di classe COM per componente non riuscito

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

Sto usando l'autenticazione di Windows e impersonate = vero nella mia web.config.

Ho eseguito tutte le impostazioni nel servizio componenti ma restituisce lo stesso errore.

Si prega di aiutare

+1

hai trovato una soluzione funzionante con questa domanda? Ho appena risposto a questa domanda con lo stesso problema. Gestisco un'applicazione VB.Net, ** non ** Asp.Net. –

+0

non importa, ho dovuto installare la funzionalità. Net di Excel dal programma di installazione di Office. Silly me –

risposta

5

C'è una questione più che potrebbe essere necessario affrontare se si utilizza il Windows 2008 Server conIIS7. Il server potrebbe segnalare il seguente errore:

Microsoft Office Excel non può accedere al file "c: \ temp \ test.xls". Ci sono diverse ragioni possibili:

  • Il nome del file o il percorso non esiste.
  • Il file è utilizzato da un altro programma.
  • La cartella di lavoro che si sta tentando di salvare ha lo stesso nome di una cartella di lavoro attualmente aperta.

La soluzione è pubblicato qui (cercare il testo inserito dall'utente Ogawa): http://social.msdn.microsoft.com/Forums/en-US/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91?prof=required

+1

+1000 per server 2008 x64 aggiungi cartella 'C: \ Windows \ SysWOW64 \ config \ systemprofile \ Desktop' bingo !!! – dotjoe

+0

Mi ha salvato la giornata. – mike27015

2

In caso aiuta qualcuno:

Sono in esecuzione Windows 7 a 64-bit e volevo registra una dll a 32 bit.

Per prima cosa ho provato: regsvr32 ed ha ottenuto il seguente errore:

System.Runtime.InteropServices.COMException (0x80040154): Recupero della class factory COM per il componente con CLSID {A1D59B81-C868-4F66-B58F-AC94A4A7982E} non riuscita a causa del seguente errore: 80040154.

Poi ho cercato di aggiungere l'applicazione tramite i Servizi componenti (Esegui-> DCCOMCNFG) (http://www.justskins.com/forums/difference-registering-dll-using-regsvr32-and-component-services-17280.html) e ha ottenuto il seguente errore:

System.UnauthorizedAccessException: Richiamo della COM class factory per componenti con CLSID {A1D59B81-C868-4F66-B5 8F-AC94A4A7982E} non riuscita a causa del seguente errore: 80070005.

Ci sono molti link a risolverlo, ma che cosa ha funzionato per me è stato: Directory principale -> Servizi componenti -> Computer -> Risorse del computer -> Applicazioni COM + - > -> Proprietà: scheda Sicurezza: Autorizzazione: deselezionare 'Applica controlli di accesso per questa applicazione'.

Non so cosa faccia.

3

Questo ha fatto il trucco per me: (soluzione dalla 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.

In autorizzazioni di esecuzione e applicazione, selezionare Personalizza, Edit. Aggiungi l'utente/gruppo che chiama l'applicazione.

4

si riceverà anche questo errore quando ci sono stantie EXCEL.EXE processi nel sistema (Usa scheda Task Manager --> Processes per visualizzare questi.)

Uccidete tutti quei casi e l'applicazione dovrebbe funzionare normalmente.

0

Il CLSID che si descrive è per Microsoft.Office.Interop.Excel.ApplicationClass. Questa classe avvia fondamentalmente excel.exe tramite InprocServer32. Se non lo hai installato, restituirà il messaggio di errore che hai ricevuto sopra.

+0

Sì, Excel non è installato sul computer server. C'è un altro modo per usare Interop senza installare Excel sul server. Lo sto chiedendo perché non posso avere accesso per installare nessun altro software sul server. –

+0

Non penso che ci sia. Excel.exe è un po 'come il motore. Potrebbe essere possibile sviluppare il servizio Web su un altro computer (con Excel), quindi chiamare tale servizio Web dal server per elaborare la richiesta e inviare nuovamente il risultato. Ciò richiederebbe forti capacità di programmazione su Windows e .NET. Esistono anche librerie di terze parti per manipolare i documenti di Excel. –

+0

@UmerFarooq Come semplice servizio Web https://support.microsoft.com/en-us/kb/308359. Restituzione di grandi quantità di dati nel servizio Web https://msdn.microsoft.com/en-us/library/aa528822.aspx. –

20

Ho avuto lo stesso errore quando ho distribuito la mia app. Ho la soluzione da questo sito: Component with CLSID XXX failed due to the following error: 80070005 Access is denied

Ecco questa soluzione:

  1. In DCOMCNFG, fare clic destro sul Risorse del computer e selezionareproprietà.

  2. Scegliere la scheda COM Securities.

  3. In Autorizzazioni di accesso, fare clic su Modifica impostazioni predefinite e aggiungere Network Service ad esso e dare Consentire l'accesso locale permesso. Fai lo stesso per < Nome_computer> \ Utenti.

  4. In Launch and Activation Permissions, fare clic su Modifica impostazioni predefinite e aggiungere Network Service ad esso e dargli lancio locale e locale attivazione permesso. Fai lo stesso per < Nome_computer> \ Utenti.

* Ho utilizzato l'autenticazione di moduli.

+0

Funziona con Windows Server 2012 R2? –

+0

Non riesco a ricordare quale versione del sistema ho avuto. Hai provato questa soluzione? – Monic

+0

Questo ha funzionato per me, dopo aver cercato una soluzione per circa 10 ore. Le altre soluzioni menzionano programmi specifici per modificare i permessi per, o per cambiare le build binarie (dll). Questo accenna alla radice (Risorse del computer) e corregge 'utente. +1. – P5Coder

0

Per IIS 8 ho fatto praticamente la stessa cosa di Monic. Sto eseguendo la mia applicazione come il proprio pool di app su una macchina x64 1. In DCOMCNFG, fare clic con il tasto destro del mouse su Risorse del computer e selezionare Proprietà.

2.Scegliere la scheda Titoli COM.

3. In Autorizzazioni di accesso, fare clic su Modifica valori predefiniti e aggiungere ii apppool \ myapp e assegnarlo Autorizza accesso locale. Fai lo stesso con lo stesso apppool \ myapp

4.In Avvio e Autorizzazioni di attivazione, fai clic su Modifica impostazioni predefinite e aggiungi ii apppool \ myapp e assegnagli il permesso Local launch e Local Activation. Fai lo stesso con lo stesso apppool \ myapp.

inoltre ho dovuto fare le cartelle descritte in C: \ Windows \ SysWOW64 \ config \ systemprofile \ Desktop e dare lettura \ permessi di scrittura a IIS apppool \ myapp anche

0

posso capire il tuo dolore. Nel mio caso l'errore è stato risolto eseguendo i passaggi seguenti:

  1. Start> Esegui> dcomcnfg.
  2. Aprire la cartella DCOM Config e selezionare Servizi componenti> Computer> Risorse del computer> Config DCOM.
  3. Selezionare "Microsoft Office Word 97 - 2003 document"/"Microsoft Excel Application" e accedere alle relative proprietà.
  4. Nella scheda "Protezione" impostare "Autorizzazioni di avvio e attivazione" devono essere personalizzate (utente autorizzato).
  5. Ora andare su IIS e selezionare il pool di applicazioni del Web e andare alle sue Impostazioni avanzate e selezionare "SERVIZIO DI RETE" come utente di identità.

Spero che questo aiuti.

Problemi correlati