Возможно, я не ищу правильные термины, потому что это кажется довольно простым. Я просто ищу способ перечислить конечные точки службы WCF, конечные точки которой созданы во время выполнения, так же, как это делает тестовый клиент WCF.
- Укажите URL
- Получение метаданных и конечных точек
Так я добавляю конечные точки во время выполнения
string SetInstrumentsURL = serviceUrl + "SetInstruments/";
string SetInstrumentsPipe = "net.pipe://localhost/TestService/SetInstruments/";
ServiceHost SetInstrumentsHost = null;
var SetInstruments = InstrumentLoader.Factory.GetIEnumerableOf<ISetInstrument>();
if (SetInstruments.Count() > 0)
{
Uri SetInstrumentsURI = new Uri(SetInstrumentsURL);
Uri SetInstrumentsPipedURI = new Uri(SetInstrumentsPipe);
NetTcpBinding netTcpBindingSetInstruments = new NetTcpBinding();
NetNamedPipeBinding NamedPipeBindingSetInstruments = new NetNamedPipeBinding(NetNamedPipeSecurityMode.None);
SetInstrumentsHost = new ServiceHost(typeof(TeraSetInstrumentService), new Uri[] { SetInstrumentsURI, SetInstrumentsPipedURI });
ServiceMetadataBehavior SetInstrumentServiceMetadataBehavior = new ServiceMetadataBehavior();
SetInstrumentsHost.Description.Behaviors.Add(SetInstrumentServiceMetadataBehavior);
SetInstrumentsHost.AddServiceEndpoint(typeof(IMetadataExchange),
MetadataExchangeBindings.CreateMexTcpBinding(), "mex");
SetInstrumentsHost.AddServiceEndpoint(typeof(IMetadataExchange),
MetadataExchangeBindings.CreateMexNamedPipeBinding(), "mex");
foreach (var setter in SetInstruments)
{
SetInstrumentsHost.AddServiceEndpoint(typeof(ISetInstrumentService), netTcpBindingSetInstruments, SetInstrumentsURL + setter.Name).Name = "Set_" + setter.Name.Replace(" ", "_");
SetInstrumentsHost.AddServiceEndpoint(typeof(ISetInstrumentService), NamedPipeBindingSetInstruments, SetInstrumentsPipe + setter.Name).Name = "Set_" + setter.Name.Replace(" ", "_");
}
SetInstrumentsHost.Open();
}
Какие функции я могу использовать со стороны клиента для доступа к тем же конечным точкам, что и WCF Test Client? Я знаю, как подключиться к этим конечным точкам, если у меня уже есть URL-адрес конечной точки, но я хотел бы иметь список конечных точек, чтобы я мог создать выпадающий список на выбор из этих изменений в зависимости от того, к какому хосту вы подключаетесь.
Добавление ссылки на службу через Visual Studio не перечисляет все конечные точки, поскольку они еще не созданы. Это библиотека, которую я могу использовать, чтобы получить их во время выполнения, как это делает WCF Test Client.