2010-11-05 4 views
2

J'ai un CLSID et j'ai besoin d'instancier ceci dans un serveur différent (DCS) où ma machine de travail est (c'est-à-dire MWS).Comment appeler un objet DCOM à partir de C#?

Maintenant, si j'utilise ce qui suit:

var type = Type.GetTypeFromCLSID(new Guid(CLSID), 
     Environment.MachineName, true); 
var COMObject = Activator.CreateInstance(type); 
var returnValue = COMObject.GetType().InvokeMember(methodName, 
         flags, null, COMObject, args, argModifiers, null, null); 

J'obtiens l'erreur "cible COM ne met pas en œuvre IDispatch". Ok, je comprends que l'objet cible COM n'a probablement pas IDispatch, donc il échoue. Maintenant, alors essayé quelque chose d'autre, Si j'ajoute une référence de cette DLL COM dans VS, alors VS génère les assemblages interop et tout fonctionne comme la création régulière d'objet .net, mais dans ce cas l'objet est en train de générer dans mon machine locale (MWS pc) pas dans le serveur ce que je veux.

Aime toute suggestion comment puis-je faire face à cette situation?

Merci d'avance.

+0

avez-vous résolu cela? – Mihailo

+0

Oui, l'exportation dans msi a résolu le problème. – Moim

Répondre

3

Vous pouvez exporter votre COM + de la machine cible en tant que proxy et l'installer sur votre machine exécutant l'application.

Accédez à la console Service de composants sur votre machine cible, cliquez avec le bouton droit sur votre application COM + et choisissez Exporter ... Puis sélectionnez le bouton radio Application Proxy. Cela exportera un proxy à cette application COM + en tant que fichier MSI. Vous devez l'installer sur votre machine au lieu de la vraie application COM + (cela signifie la supprimer si elle est installée là) et ensuite essayer votre interop.

Questions connexes