2009-07-27 9 views
8

Sto cercando di modificare un documento di Word da VB.NET utilizzando per la maggior parte di questo codice:Recupero della class factory COM per l'errore componente durante la generazione di documento di parola

Come automatizzare Word da Visual Basic .NET per creare un nuovo documento http://support.microsoft.com/kb/316383

Funziona correttamente sulla mia macchina ma quando pubblico sul server ottengo il seguente errore.

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

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.UnauthorizedAccessException: Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 80070005.

L'errore effettivo accade quando provo a creare solo un oggetto applicazione parola

Dim oWord As New Word.Application 

utilizzando Visual Studio 2008 e VB.NET 3.5. Ho fatto riferimento alla "Libreria oggetti di Microsoft Word 10.0" e vedo il file Interop.Word.dll nella directory bin.

Utilizzando MS Office 2003 sulla macchina di sviluppo e Windows Server 2003

ancora abbastanza nuovo per .NET e non hanno una conoscenza molto di server di finestra, ma "UnauthorizedAccessException" suona come un problema di autorizzazione. Mi chiedo se qualcuno potrebbe indicarmi la direzione giusta su ciò che potrei dover fare per dare accesso alla mia piccola applicazione all'uso della parola.

risposta

7

Sembra decisamente un problema di autorizzazioni. Stai eseguendo il tuo codice in un servizio Windows? Il servizio normalmente viene eseguito come sistema locale, che potrebbe non disporre dell'autorizzazione per accedere al modello a oggetti di Word. Inoltre, se la parola è già in esecuzione utilizzando le credenziali di un altro utente, il tuo programma potrebbe non essere in grado di accedervi tramite COM utilizzando credenziali diverse. Le applicazioni per ufficio tendono ad essere single instance che sembra esacerbare questo problema.

+0

Interessante quando ho effettuato l'accesso al sistema e ho eseguito Word, ha eseguito l'installazione. Immagino che nessuno abbia fatto parola prima su questo utente. Non ha risolto il mio problema, ma mi sto chiedendo anche se il problema del permesso non gli avrebbe impedito di funzionare. Nessun mio codice è un'applicazione Web. Anche se si tratta di una piccola app raramente utilizzata, non ho mai considerato cosa sarebbe successo se due persone avessero provato a eseguirlo contemporaneamente. Grazie per l'input. C'è un modo per vedere se qualcun altro sta accedendo all'oggetto COM? Sono abbastanza sicuro che nient'altro è, ma non saprei nemmeno dove controllarlo. – TheDPQ

+0

L'applicazione Web è in esecuzione come utente? Ad esempio, in IIS 7, il pool di applicazioni verrà eseguito come sistema locale che probabilmente avrà lo stesso problema. –

+0

Ancora una volta scusami la mia ignoranza ma è "Servizio di rete" di cosa stai parlando? È l'identità che il pool di applicazioni è impostato per utilizzare. – TheDPQ

0

Suona come si può avere un problema di autorizzazione in DCOM. Prova a modificare le autorizzazioni di Word nella configurazione DCOM.

+0

Trovato un po 'di persone che fanno riferimento a http://blog.crowe.co.nz/archive/2006/03/02/589.aspx ma è per eccellere. Non ha aiutato, l'errore è lo stesso ma il numero di errore è cambiato in: 80080005. System.Runtime.InteropServices.COMException invece di System.UnauthorizedAccessException – TheDPQ

0

stavo sperimentando lo stesso problema e la zona problema che ho trovato era "configurazione della sicurezza per Microsoft Word in DCOM". Nel seguente link è possibile trovare una guida dettagliata per sapere come configurare i componenti in DCOM, ripetere questi passaggi per WORD e il problema verrà risolto.

http://www.biocompsystems.com/_public/DCOMConfigurationStepbyStepForXP.doc

Grazie, Sushil Jinder

0

Vai Start -> Esegui
tipo regedit -32 e premere il tasto invio.
- L'editor del registro si aprirà.
Vai a Registro di HKEY_CLASSES_ROOT \ Word.Application
Selezionare Word.Application e impostare il permesso pieno al di sotto di utenti: -
amministratore, amministratori, servizio locale, Sistema, servizio, interattivo e gli utenti.

1

Nel mio caso, Word sta eseguendo un servizio Windows con un account di servizio.

Il problema era che la cartella Desktop non esisteva in C:\Windows\System32\config\systemprofile (o in C:\Windows\SysWOW64\config\systemprofile).

L'aggiunta ha risolto il problema per me.

0

Ho avuto lo stesso problema durante la generazione di un documento word. Il problema è stato risolto controllando il task manager e terminando il processo WINWORD.EXE attualmente in esecuzione e quindi eseguito di nuovo il mio codice. Il problema è andato.

Problemi correlati