Попробуйте это ... не проверено, но должно работать для вас.Он проверит вашу конфигурацию на наличие любых конечных точек с соответствующим контрактом.Вы можете изменить его так, чтобы он совпадал по имени, возвращал другую информацию или что-либо еще, что имеет смысл для вашей ситуации.Если совпадений не найдено, вы можете использовать логику для создания конечной точки по умолчанию.
public List<EndpointAddress> GetEndpointAddresses(Type t)
{
string contractName = t.FullName;
List<EndpointAddress> endpointAddresses = new List<EndpointAddress>();
ServicesSection servicesSection = ConfigurationManager.GetSection("system.serviceModel/services") as ServicesSection;
foreach (ServiceElement service in servicesSection.Services)
{
foreach (ServiceEndpointElement endpoint in service.Endpoints)
{
if (string.Compare(endpoint.Contract, contractName) == 0)
{
endpointAddresses.Add(new EndpointAddress(endpoint.Address));
}
}
}
if (endpointAddresses.Count == 0)
{
//TODO: Add logic to determine default
endpointAddresses.Add(new EndpointAddress("Your default here"));
}
return endpointAddresses;
}