I had created a COM+ domain partition then mapped it to a Windows 2008 server machine and imported a COM+ application into it.
I tried using the following C# code to activate an object from that specific partition on the server remotely:
//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);
But I get this exception:
Cannot create channel sink to connect to URL 'partition:{41e90f3e-56c1-4633-81c3-6e8bac8bdd70}/new:MyObject'. An appropriate channel has probably not been registered.
Does anybody know how such an activation can be accomplished?
mtz1406
Make sure your Com is public and visible. To do this, add these tags to your Com class:
[ClassInterface(ClassInterfaceType.AutoDual)] [Guid("41E90F3E-56C1-4633-81C3-6E8BAC8BDD70")] [ProgId("..........")] [ComVisible(true)] public class MyCom {
Make sure your COM has been registered. You can do this using the command line:
C:\WINDOWS\Microsoft.Net\Framework\v4.0.30319\regasm "C:\.......\xxx.dll"
来源:https://stackoverflow.com/questions/8916865/com-object-activation-in-a-different-partition