【问题标题】:How to call a DCOM object from C#?如何从 C# 调用 DCOM 对象?
【发布时间】:2011-05-05 13:08:17
【问题描述】:

我有一个 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)没有进入我想要的服务器。

各位有什么建议我该如何处理这种情况?

提前致谢。

【问题讨论】:

  • 是的,导出到 msi 解决了这个问题。

标签: c# com dcom


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    • 1970-01-01
    • 2021-09-06
    相关资源
    最近更新 更多