【问题标题】:Calling a COM+ Component remotely using C#使用 C# 远程调用 COM+ 组件
【发布时间】:2009-10-20 20:20:22
【问题描述】:

我有一个小的 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();

类型返回为空。

最好的方法是什么??

服务器是 Windows 2003 Enterprise,服务是一个包装为 COM+ 的 .NET 组件(我知道我不必这样做,但目的是将旧版应用程序与 .NET 组件集成)这样做的目的只是为了测试 .NET COM+ 组件是否正常工作。

提前致谢!

【问题讨论】:

  • 客户端也是com对象注册吗?
  • 不,COM对象在其他服务器。

标签: .net com+


【解决方案1】:

我没有尝试过,但你的方法是有道理的。它看起来与Interoperating without Proxies 非常相似,但带有一个远程服务器。

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

一些故障排除建议:

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

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

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

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

【讨论】:

  • 谢谢,我将添加异常标志以查看是否出现异常,因为现在我得到的是空值。
【解决方案2】:

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

步骤如下:

  1. 在 .NET Framework 配置控制台上注册程序集(配置程序集)
  2. 在 GAC 中注册程序集
  3. 在组件服务控制台中注册 COM+ 应用程序。然后将组件添加到实际的程序集(dll)中

Jeje,我错过了第一个。

感谢您抽出宝贵时间回答问题。

谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-03
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 2014-10-14
    • 2021-07-25
    相关资源
    最近更新 更多