44 messaggi dal 16 gennaio 2009
Buongiorno,
sto cercando di scambiare dati tra un applicativo ASP.Net Core 2 ed una apparecchiatura industriale che utilizza un accesso dati DNC che però è basato su componenti COM.
Io ho sviluppato in passato una DLL NET che utilizza questi componenti, e l'ho utilizzata senza problemi in altre applicazioni Winform.
Adesso ho provato ad aggiungerla all stesso modo come riferimento all'applicazione ASP.Net Core 2 ma, non appena cerco di istanziare la classe da utilizzare della mia dll mi esce l'erroraccio seguente:

"Unable to cast COM object of type 'System.__ComObject' to interface type 'HeidenhainDNCLib.JHMachineInProcess'. 
This operation failed because the QueryInterface call on the COM component for the interface with IID '{5748A4D4-59A9-4D6D-80E2-EE2286170E11}' 
failed due to the following error: Interfaccia non supportata. (Exception from HRESULT: 0x80004002 (E_NOINTERFACE))."


Ora, cercando in rete il codice di errore 0x80004002, mi pare di aver capito che è alquanto generico e significa appunto che l'interfaccia COM richiesta non è supportata.
Questo però mi accade solo se utilizzata all'interno di ASP.Net Core (in applicazioni Winform .NET funziona benissimo), quindi penso che la causa non sia legata ad un limite del fornitore dei componenti COM ma a qualcosa che zucca con la tecnologia ASP.Net Core.

Qualcuno può darmi una mano a capire l'inghippo?

Grazie
49 messaggi dal 20 luglio 2011
potrebbe essere utile https://weblog.west-wind.com/posts/2019/Jan/22/COM-Object-Access-and-dynamic-in-NET-Core-2x

"Imparare è un'esperienza, tutto il resto è solo informazione." -Albert Einstein-
44 messaggi dal 16 gennaio 2009
Ciao gmc2,
grazie per la pronta risposta.
Ho già visto quel link ma ho difficoltà a capire come recuperare il type dall'id. Nell'esempio viene recuperato da InternetExplorer ma non ho capito cosa dovrei passargli nel mio caso.
49 messaggi dal 20 luglio 2011
string progId = "InternetExplorer.Application";
Type type = Type.GetTypeFromProgID(progId);
object inst = Activator.CreateInstance(type);

bisognerebbe capire qual'è il progId del tuo com , proverei con quello che hai ovvero :

nhainDNCLib.JHMachineInProcess
oppure
{5748A4D4-59A9-4D6D-80E2-EE2286170E11}

oppure puoi scrivere all'autore del blog e chiedere nel tuo caso quale dovrebbe essere il progId :-)

"Imparare è un'esperienza, tutto il resto è solo informazione." -Albert Einstein-

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.