2009-01-27 6 views
6

У меня есть обслуживаемый компонент, установленный в серверном приложении COM +. Я хочу создать экземпляр из удаленного клиента. Клиент должен иметь возможность указывать имя серверного компьютера динамически. Как мне это сделать?Вызов удаленного COM + ServicedComponent с клиента C#

Я попытался с помощью Активатор:

  (XSLTransComponent.XSLTransformer)Activator.GetObject(
         typeof(XSLTransComponent.XSLTransformer), 
         serverName 
         ); 

Но я получаю это:

System.Runtime.Remoting.RemotingException: Невозможно создать мойку канал для подключения к серверу '' URL. Вероятно, соответствующий канал не был зарегистрирован. в System.Runtime.Remoting.RemotingServices.Unmarshal (Тип classToProxy, String url, Данные объекта)

Нужно ли регистрировать канал? Если да, то как?

Другая идея - использовать Marshall.BindToMoniker, но как указать прозвище для удаленного объекта, размещенного на COM + на сервере x?

ответ

3

Eureka! Это работает:

string serverName = serverTextBox.Text; 
Type remote = Type.GetTypeFromProgID("XSLTransComponent.XSLTransformer", serverName); 
return (XSLTransComponent.XSLTransformer)Activator.CreateInstance(remote); 

Благодаря this question

Смежные вопросы