Объединив ответы как gWiz, так и Дилана, я нашел способ сделать это, хотя я недостаточно тщательно протестировал, чтобы узнать, не нарушил ли я какие-либо другие функции с этими изменениями.
В основном я добавил этот класс:
public class MobileMonitoringSvcHost : ServiceHost
{
protected override void ApplyConfiguration()
{
// skip this line to not apply default config - unsure of other ramifications of doing this yet...
base.ApplyConfiguration();
base.Description.Endpoints.Clear();
}
public MobileMonitoringSvcHost(object singletonInstance, params Uri[] baseAddresses) : base(singletonInstance, baseAddresses)
{
}
}
Это пропускает вызов ServiceHost "ApplyConfiguration" и (вероятно, пока нет необходимости, потому что если конфигурация не загружена, не должно быть никаких конечных точек) очищает конечные точки. Затем я делаю следующее:
m_SvcHost = new MySvcHost(this);
if (Config.ServiceEndpoint != null && Config.ServiceEndpoint != String.Empty)
{
//m_SvcHost.Description.Endpoints.Clear();
m_SvcHost.AddServiceEndpoint(typeof(IMobileMonitoringSvc),
new BasicHttpBinding(),
Config.ServiceEndpoint);
}
// open the svchost and allow incoming connections
m_SvcHost.Open();
Это приводит к тому, что служба прослушивает только внешнюю настроенную конечную точку, а не настроенную конечную точку app.config
Спасибо!