如何从C#调用DCOM对象?

时间:2010-11-05 10:52:07

标签: c# com dcom

我有一个CLSID,我需要在不同的服务器(即DCS)中实例化这个,就像我的工作机器一样(即MWS)。

现在,如果我使用以下内容:

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);

然后我得到“COM目标没有实现IDispatch”错误。好吧,我知道可能COM目标对象没有IDispatch,所以它失败了。

现在尝试了其他的东西,如果我在VS中添加该COM DLL的引用,那么VS生成互操作程序集然后一切都像常规.net对象创建一样工作,但在这种情况下,该对象实际上是在我的本地生成机器(MWS pc)没有进入我想要的服务器。

伙计们有什么建议我怎么处理这种情况?

提前致谢。

1 个答案:

答案 0 :(得分:3)

您可以将目标计算机上的COM +作为代理导出,并将其安装在运行该应用程序的计算机上。

转到目标计算机上的组件服务控制台,右键单击COM +应用程序并选择导出...然后选择应用程序代理单选按钮。这将导致代理作为MSI文件导出到该COM +应用程序。你需要在你的机器上安装它而不是真正的COM +应用程序(这意味着如果它安装在那里就删除它),然后尝试你的互操作。