Я изучаю WCF, и в качестве практического упражнения я решил написать общую оболочку для класса ServiceHost. Идея заключается в том, чтобы иметь класс, как показано ниже:Самостоятельная служба WCF - запутанное поведение
public class Host<I(nterface), S(ervice)>
where S : I, new()
{
/**/
ServiceHost mServiceHost;
S mServiceInstance = new S();
}
Если тип I является интерфейсом с [ServiceContract]
атрибутом & типа S является службой, которая реализует на вышеупомянутый интерфейс.
Я создал вспомогательную службу типа hello-world, чтобы проверить мой класс на ходу.
В конструкторе хозяина я инстанцирован внутренний ServiceHost так:
mServiceHost = new ServiceHost(mServiceInstance);
Я добавил конечную точку службы:
mServiceHost.AddServiceEndPoint(typeof(I), new BasicHttpBinding(), new Uri("http://localhost:40000/MyTestService"));
чуть позже я открыл хозяин, запустил мое приложение и попытался выяснить, укажет ли мой браузер сервис, присутствующий в разделе «http: // localhost: 40000/MyTestService» - я получил пустую страницу, и все попытки добавить ссылку на службу не удались.
Я позже добавил тот же Ури конструктору ServiceHost в:
mServiceHost = new ServiceHost(mServiceInstance, new Uri("http://localhost:40000/MyTestService"));
второй аргумент, что конструктора является либо:
params string[] baseAddresses
или
params Uri[] baseAddresses
В любом случае, наличие ключевого слова «params» говорит мне, что этот параметр НЕ ДОПОЛНИТЕЛЬНЫЙ.
Я реактивировал свое приложение и (используя браузер), перешел к uri. Появилась служебная страница. В целом - это работает, но не так, как я ожидал, мне, кажется, что-то не хватает.
Вопросы:
Почему служба терпят неудачу, когда я не поставить дополнительный параметр baseAddresses в конструкторе ServiceHost - при попытке покормить адреса при добавлении конечных точек служб?
Могу ли я достичь своей цели «так, как я изначально хотел, чтобы это было»?
С уважением, и в надежде услышать от экспертов WCF в ближайшее время (tm).
Хотелось бы, чтобы он не удалил свой ответ, я собирался «принять», это после некоторого последующего чтения: / – Maciek