2009-01-27 14 views
6

Bir COM + sunucu uygulamasında yüklü bir hizmet bileşenim var. Uzak bir istemciden bir örnek oluşturmak istiyorum. İstemci, sunucu makinesinin adını dinamik olarak belirleyebilmelidir. Bunu nasıl yaparım? Bir C# istemcisinden uzak bir COM + ServicedComponent çağrısı

Ben Activator kullanarak çalıştı:

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

Ama bu olsun:

System.Runtime.Remoting.RemotingException: URL 'sunucu' bağlanmak için kanal lavabo oluşturulamıyor. Uygun bir kanal muhtemelen kaydedilmemiş. System.Runtime.Remoting.RemotingServices.Unmarshal (Type classToProxy, String url, Object verileri)

Kanal kaydetmem gerekir mi? Öyleyse nasıl?

Başka bir fikir Marshall.BindToMoniker kullanmaktır, ancak sunucu x'de COM + üzerinde barındırılan uzak nesne için nasıl bir moniker belirtebilirim?

cevap

3

Eureka! Bu çalışır: this question

için

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

Teşekkür