Z powodzeniem używam Castle Integrsor WCF Integration Facility w mojej aplikacji klienckiej WCF, aby uzyskać połączenie z serwerem i wysyłać zgłoszenia serwisowe:
_container = new WindsorContainer();
_container.Kernel.AddFacility<WcfFacility>();
_container.Register(Component
.For<IService>()
.AsWcfClient(new DefaultClientModel(WcfEndpoint.FromConfiguration("Service"))));
// ...
var service = _container.Resolve<IService>();
service.SomeOperation();
Chciałbym jednak wyświetlić użytkownikowi adres punktu końcowego, z którym jest połączony. Z svcutil-generowane obiekty proxy, adres można uzyskać za pomocą:
var address = client.Endpoint.Address.ToString();
Wiem, że mogę zbadać konfigurację aplikacji i pobrać w ten sposób szczegóły punktu końcowego, ale czy można je pobrać bezpośrednio z obiektu proxy Castle Windsor, czy z procesu konfiguracji?
Odpowiedzi:
0 dla odpowiedzi № 1Cóż, jeśli naprawdę musisz, jest na to sposób, ale to nie jest ładne:
var service = container.Resolve<IService>();
var meta = (IWcfChannelHolder) service;
var channel = (IClientChannel) meta.Channel;
var address = channel.RemoteAddress;