使用C#远程调用COM +组件

时间:2009-10-20 20:20:23

标签: .net com+

我在远程服务器上有一个小的COM +组件作为服务。

我正在尝试使用以下方法执行此组件的方法:

Type type = Type.GetTypeFromProgID("ComPlusTest.ComTestClass",serverName);

// Create Service
Object service = Activator.CreateInstance(type);

// Execute Method
String result = service.GetType().InvokeMember("LaunchPackage",
    BindingFlags.InvokeMethod, null, parameters, null).ToString();

该类型返回null。

这样做的最佳方式是什么?

服务器是Windows 2003 Enterprise,该服务是一个封装为COM +的.NET组件(我知道我不必这样做,但目的是使用.NET组件迭代旧版App)这样做的目的只是为了测试.NET COM +组件的工作原理。

提前致谢!

2 个答案:

答案 0 :(得分:1)

我没有尝试过,但你的方法很有意义。它看起来与Interoperating without Proxies非常相似,但具有远程服务器。

也许您遇到了其他一些问题(例如配置或权限)?

一些故障排除建议:

尝试直接在“远程”服务器上运行测试程序。

此外,您是否尝试将第一行更改为:

Type type = Type.GetTypeFromProgID("ComPlusTest.ComTestClass",serverName, true);

如果遇到错误,这应该抛出异常,并且可能会为您提供有关您遇到的特定问题的更多信息。

答案 1 :(得分:1)

我已经解决了这个问题。 COM +未正确安装在服务器上。我错过了在.NET Framework配置控制台中配置程序集的步骤。

步骤如下:

  1. 在.NET Framework配置控制台上注册程序集(配置程序集)
  2. 在GAC中注册程序集
  3. 在组件服务控制台中注册COM +应用程序。然后将组件添加到实际组件(dll)
  4. Jeje,我错过了第一个。

    我多么感激你回答这个问题的时间。

    谢谢!