2

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

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

提前致谢。

4

1 回答 1

3

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

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

于 2010-11-05T13:33:37.463 回答