我在COM +服务器应用程序中安装了服务组件。我想从远程客户端创建一个实例。客户端需要能够动态指定服务器计算机的名称。我该怎么做?
我尝试使用Activator:
(XSLTransComponent.XSLTransformer)Activator.GetObject(
typeof(XSLTransComponent.XSLTransformer),
serverName
);
但我明白了:
System.Runtime.Remoting.RemotingException:无法创建通道接收器以连接到URL“服务器”。可能尚未注册适当的频道。 在System.Runtime.Remoting.RemotingServices.Unmarshal(类型classToProxy,String url,Object data)
我是否需要注册频道?如果是这样,怎么样?
另一个想法是使用Marshall.BindToMoniker,但是如何为服务器x上的COM +上托管的远程对象指定名字对象?
答案 0 :(得分:3)
尤里卡!这有效:
string serverName = serverTextBox.Text;
Type remote = Type.GetTypeFromProgID("XSLTransComponent.XSLTransformer", serverName);
return (XSLTransComponent.XSLTransformer)Activator.CreateInstance(remote);