WebServiceHost BaseAddresses

Для следующего класса:

public class MyClass
{
   private WebServiceHost m_WebServiceHost;
}

Мне нужно отследить URI, с которым он был инициализирован. Я реализовал этот метод:

public void MyTrace()
{
    Trace.TraceInformation("URI {0}",m_WebServiceHost.BaseAddresses);
}

Но я получаю:

URI System.Collections.ObjectModel.ReadOnlyCollection`1[System.Uri]

Что случилось?

1 ответ

Решение

Что ж, WebServiceHost.BaseAddressesэто коллекция, а не один объект. Так что использование.ToString() просто вернет имя класса, а не значение. Вам просто нужно сначала каким-то образом перечислить коллекцию, например, foreach поможет. Каждый базовый адрес является Uri так что мы можем использовать AbsoluteUri свойство для получения строкового представления:

public void MyTrace()
{
    string addresses = string.Empty;
    foreach (var address in m_WebServiceHost.BaseAddresses)
        addresses += address.AbsoluteUri;
    Trace.TraceInformation("URI {0}", addresses);
}
Другие вопросы по тегам