Newsgroup: it.comp.programmare.win32
Titolo: Registrazione componente COM + (Impossibile trovare libreria dei tipi)

Ho realizzato una libreria ActiveX, che fornisce servizi di accesso ai dati.
La libreria funziona correttamente se chiamata tramite COM o i
sevizi RDS di ADO. Tuttavia su alcune macchine sembra impossibile
utilizzarla da una pagina ASP. (Ho verificato che su tre macchine funziona
in tutti i modi possibili COM, RDS, ASP). Nei casi in cui non funziona si
ottiene da IIS un errore di questo tipo:
Impossibile trovare libreria dei tipi
Ho notato che lo stesso errore viene segnalato quando si tenta di registrare
il componente nei servizi componenti COM+, ma solo sulle macchine su cui la
dll non funziona da ASP, mentre sulle altre la registrazione va a buon fine.
Ho provato a portarmi dietro anche la type library senza risultati.
Chi ha qualche idea?

Mi sembra strano, davvero, che tu non riesca ad utilizzare il COM+. Forse
non č che hai realizzato un in-process server e cerchi di trattarlo come un
RPC out-of-process server? E' possibile. Ma se questi č un controllo non
puoi usarlo come COM+, dal momento che i controlli ActiveX sono gestiti in
dll e quindi sono in-process.

Io in effetti ho realizzato un in process server (almeno credo, ormai ho
dubbi su tutto), e francamente come tale intendo usarlo. A dire la verità
non mi interessa nulla utilizzarlo in COM+, l'unica cosa di cui avrei
bisogno è richiamarlo da una pagina ASP, cosa che tra l'altro in tre casi su
cinque mi riesce perfettamente, senza alcun bisogno di chiamare in causa
COM+.
Questa storia di COM+, è nata solo dal fatto che gli utilizzatori di questa
dll, ai quali non funziona, hanno provato a registrarla in COM+ e hanno
riscontrato il medesimo errore che gli veniva restituito da IIS.
Aggiungo che io ho effettuato con successo la registrazione della dll come
componente COM+ sulle tre macchine dove la dll funziona anche con la
volgarissima registrazione regsvr32.
Non so dove andare a sbattere la testa.
Grazie dell'aiuto.

Mi stai creando di quei dubbi madornali:
 1- hai creato una dll, quindi un in-process server.
 2- sei riuscito a registrare una dll com COM+?
      Su questo ho dei seri dubbi, dal momento che i COM+ sono solo .exe.
 3- Per chiamare un componente da ASP non bisogna installarlo come COM+.
 4- Eccoti il codice per richiamarlo:
      <% Dim com
             Set com = CreateObject("nomecom")
            //...
            Set com = Nothing
       %>

 ha scritto nel messaggio
news:98bbqc$o9o$1...@pluto.sm.dsi.unimi.it...

questo in effetti è proprio il modo con cui lo chiamo, ma funziona solo su
alcune machine, su altre dà lo strano errore di cui ti dicevo.
Sei sicuro che COM+ possa gestire solo exe? Io ho registrato una dll di
prova (solo per dei test) con COM+, a dire il vero non ho usato nessuno dei
servizi COM+, ma per la registrazione no problem. In più anche sulla dll
incriminata ho effettuato la registrazione come componente di una nuova
applicazione senza problemi in 3 macchine su 5. Dalla documentazione che ho
non mi risulta che COM+ sia utilizzabile solo con exe. Comunque ripeto che a
me di COM+ non importa un fico secco. Ho solo il sospetto che il motivo del
fallimento della registrazione in COM+ sia lo stesso del fallimento della
chiamata Set com = CreateObject("nomecom") dalla pagina ASP (ripeto funziona
in 3 casi su 5, senza chiamare in causa COM+ di cui non so cosa farmene),
dato che ottengo nei due casi lo stesso messaggio di errore.

E comunque, domanda fondamentale: hai provato a fare la registrazione con
regsvr32? E se si, con che risultati? Che errore ti ha tornato, sempre
quello della libreria dei tipi (la .tlb)?

Beh, è giustamente vero che se il COM o COM+ o DCOM non è registrato allora
quando tu vai a chiamare la CreateObject(...) essa ritorni errore, per il
motivo stesso che non è registrato. Se tu provassi a registrarlo come COM+,
non potresti richiamarlo dalla pagina ASP in quanto se non usi un bridge non
va proprio come RPC.

Il componente era stato registrato con il volgare e classico Regsvr32,
ripeto prova ne è il fatto che su tre (3) macchine funziona tutto, inoltre
se si mette una dll in COM+ la registrazione viene eseguita automaticamente,
in effetti COM+ usa due archivi in cui registra le proprie informazioni, di
cui uno è proprio il caro vecchio maledetto registro.

Mi sapresti dare tu una risposta ad un quesito? Allora la domanda da 100
milioni č questa: perchč da qualche giorno il regsvr32 su una macchina WinME
non funziona piů, ritornando l'errore "DllRegisterServer in C\...\mydll.dll
failed. Return code was: 0x80040154"?
Ti prego rispondi a questa domanda e io ti giuro che troverň il modo di
risolvere il tuo problema. Sto diventando matto.