Problema Caricamento COM

mercoledì 22 febbraio 2012 - 14.58

giucorn Profilo | Junior Member

Ciao a tutti, ho un problema con la pubblicazione di un sito internet .net. In locale funziona tutto appena lo pubblico mi da errore. Sto creando un sito in cui mi crea un file word in base ad modello già preipostato.

Il codice è il seguente:
Dim Wrd As new Microsoft.Office.Interop.Word.Application, Doc As new Microsoft.Office.Interop.Word.Document
Dim Modello As String, NomeFile As String, i As Integer
Dim Record As String, SQL As String
Dim Tbl As String
' Dim TotRiga As Currency, Totale As Currency
Dim ReplSel As Boolean

Modello = Server.MapPath("~") & "\Lettera.dot"

On Error Resume Next 'gestione errori step by step
'cerca un'istanza di Word già aperta
Wrd = GetObject(, "Word.Application")
If Err.Number = 429 Then
'se c'è stato un errore è perchè Word non era già aperto:
'aprilo adesso
Wrd = CreateObject("Word.Application")
End If

On Error GoTo 0 'ripristina la segnalazione degli errori

'rendi visibile la finestra di Word:
Wrd.Visible = True
'attiva Word e portalo in primo piano:
Wrd.Activate()
'abilita l'opzione "Sostituisci la selezione". Se non fosse
'attiva, i campi modulo rimarrebbero all'interno del testo.
ReplSel = Wrd.Options.ReplaceSelection
Wrd.Options.ReplaceSelection = True

'Apri un nuovo documento basato sul modello:
Doc = Wrd.Documents.Add(Modello)
'attivalo e portalo in primo piano:
Doc.Activate()

'seleziona il bookmark del primo campo Nome cliente:
Doc.Bookmarks("NomeCliente1").Select()
'e sovrascrivilo con il contenuto dei campi
'Cognome e Nome:
Wrd.Selection.TypeText("PINCO" & " " & "PALLINO")

'ripristina il valore originario dell'opzione
'"Sostituisci la selezione"
Wrd.Options.ReplaceSelection = ReplSel

'avvisa l'utente che l'esportazione è terminata
Wrd.Application.WordBasic.MsgBox("Esportazione terminata", "Esportazione dati").

In Locale funziona tutto e perfettamente, appena lo pubblica mi da il seguente errore:

Recupero della class factory COM per il componente con CLSID {000209FF-0000-0000-C000-000000000046} non riuscito a causa del seguente errore: 80070005.
Descrizione: Eccezione non gestita durante l'esecuzione della richiesta Web corrente. Per ulteriori informazioni sull'errore e sul suo punto di origine nel codice, vedere l'analisi dello stack.

Dettagli eccezione: System.UnauthorizedAccessException: Recupero della class factory COM per il componente con CLSID {000209FF-0000-0000-C000-000000000046} non riuscito a causa del seguente errore: 80070005.

ASP.NET non è autorizzato ad accedere alla risorsa richiesta. Provare a concedere diritti di accesso alla risorsa all'identità di richiesta di ASP.NET. ASP.NET dispone di un'entità di processo di base (in genere {MACHINE}\ASPNET su IIS 5 o Network Service su IIS 6) che viene utilizzata se l'applicazione non esegue la rappresentazione. se l'applicazione esegue la rappresentazione tramite <identity impersonate="true"/>, l'identità sarà rappresentata dall'utente anonimo (in genere IUSR_MACHINENAME) o dall'utente autenticato che ha eseguito la richiesta.

Per concedere l'accesso a un file ad ASP.NET, fare clic su di esso con il pulsante destro del mouse in Esplora risorse, scegliere Proprietà e fare clic sulla scheda Protezione. Fare clic su "Aggiungi" per aggiungere l'utente o il gruppo appropriato. Evidenziare l'account ASP.NET e selezionare la casella relativa all'accesso desiderato.


In cosa sbaglio???

Grazie in anticipo.....


martinez Profilo | Senior Member

Ciao!

nell'esempio da te citato è fondamentale che sul SERVER che ospita la tua applicazione oltre alle Office PIAs sia prensente anche la versione Office interessata ... Hai questi requisiti?

Saluti

giucorn Profilo | Junior Member

Infatti come primo errore mi aveva dato che non trovava la versione corretta di Microsoft.Office.Interop.Word.dll. Adesso ho istallato lo stessa versione di office anche sul server.

Istallato OFFICE PIAs della versione del office ma l'errore è ancora lo stesso....

martinez Profilo | Senior Member

>Infatti come primo errore mi aveva dato che non trovava la versione
>corretta di Microsoft.Office.Interop.Word.dll. Adesso ho istallato
>lo stessa versione di office anche sul server.
>
>Istallato OFFICE PIAs della versione del office ma l'errore è
>ancora lo stesso....

allora è semplicemente - si fa per dire :) - una questione di permessi sul server (visto che puoi accederci) lancia da esegui (da win 7 puoi scrivere il comando in cerca programmi e file):

dcomcnfg
da qui seleziona:
- Direcotry radice
- Servizi componenti
- Computer
- Computer locale
- Config DCOM
e qui cerchi il componente che ti interessa ... ehmmm qualcosa come "applicazione office word" oppure "documento office word" quindi tasto destro proprietà e nella scheda sicurezza aggiungi a tutti e tre le voci i diritti di lancio in locale ed in remoto all'utente ASPNET.

Come utlima cosa aggiungo, siccome mi ci son perso parecchie volte con tali PIA ... che se non è fondamentale e puoi aggirare l'ostacolo con altri componenti ... di risolvere diversamente.
Saluti

giucorn Profilo | Junior Member

Ci sono delle particolarità, nella lista delle com ho trovato: Documento di Microsoft Office Word 97 - 2003, io ho istallato Office2007.

L'errore è leggermente modificato autorizzando "everyone" al controllo totale
Recupero della class factory COM per il componente con CLSID {00020906-0000-0000-C000-000000000046} non riuscito a causa del seguente errore: 80080005.
Descrizione: Eccezione non gestita durante l'esecuzione della richiesta Web corrente. Per ulteriori informazioni sull'errore e sul suo punto di origine nel codice, vedere l'analisi dello stack.

Dettagli eccezione: System.Runtime.InteropServices.COMException: Recupero della class factory COM per il componente con CLSID {00020906-0000-0000-C000-000000000046} non riuscito a causa del seguente errore: 80080005.

Errore nel codice sorgente:

Durante l'esecuzione della richiesta Web corrente stata generata un'eccezione non gestita. Per informazioni sull'origine e la posizione dell'eccezione, vedere l'analisi dello stack dell'eccezione riportata di seguito.

martinez Profilo | Senior Member

sia le PIA che Office devono essere della stessa versione ... e questa è 'ultima cosa che mi viene in mente ... poi come detto in precedenza ho lasciato perdere per ovvi motivi.

Saluti

giucorn Profilo | Junior Member

Hai perfettamente ragione, questo legame con word è troppo vincolante, proverò a cercare un'altra strada.

empire Profilo | Newbie

Ciao io ho il tuo stesso problema hai novità di come hai risolto ?io ci sto impazzendo da mesi..:( Grazie
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5