COM +对象在不同分区中激活

时间:2012-01-18 20:21:56

标签: c# com multiple-instances activation moniker

我创建了一个COM +域分区,然后将其映射到Windows 2008服务器计算机并将COM +应用程序导入其中。

我尝试使用以下C#代码远程激活服务器上该特定分区的对象:

//partition guid
Guid guidMyPartition = new Guid("41E90F3E-56C1-4633-81C3-6E8BAC8BDD70");
//parition moniker
string uri= "partition:{" + guidMyPartition + "}/new:MyObject";
Type t = Type.GetTypeFromProgID("MyObject", "MyServer");
MyObject obj = (MyObject)Activator.GetObject(t, uri);

但我得到了这个例外:

  

无法创建频道接收器以连接到网址'{41e90f3e-56c1-4633-81c3-6e8bac8bdd70} / new:MyObject'。可能尚未注册适当的频道。

有人知道如何实现这种激活吗?

1 个答案:

答案 0 :(得分:1)

  1. 确保您的Com是公开且可见的。为此,请添加这些 标记到您的Com类:

    [ClassInterface(ClassInterfaceType.AutoDual)]
    [Guid("41E90F3E-56C1-4633-81C3-6E8BAC8BDD70")]
    [ProgId("..........")]
    [ComVisible(true)] 
    public class MyCom
    {
    
  2. 确保您的COM已注册。您可以使用命令行执行此操作:

    C:\WINDOWS\Microsoft.Net\Framework\v4.0.30319\regasm "C:\.......\xxx.dll"