Найти адреса конечных точек для реализации службы без OperationContext.Current - PullRequest
0 голосов
/ 07 августа 2009

У меня есть служба WCF, в которой я хотел бы выполнить некоторые операции типа инициализации на основе настроенных EndpointAddresses для нескольких различных контрактов, реализованных службой.

Служба может быть (и есть) размещена в нескольких разных узлах службы. Существует консольное приложение, которое создает узел службы, служба Windows, которая создает узел службы, он живет на узле IIS, и мне бы очень хотелось иметь возможность использовать узел службы Visual Studio для отладки.

Есть ли способ получить ссылку на ServiceHostBase, который создал экземпляр службы, не находясь внутри операции службы? Или, может быть, лучший (читай: сложнее) способ выяснить, какие конечные точки обслуживает служба?

1 Ответ

1 голос
/ 07 августа 2009

Позвольте мне посмотреть, правильно ли я понимаю: у вас есть одна реализация Service, которая предоставляется несколькими ServiceHosts, и вы хотите выполнить некоторую различную инициализацию для каждого servicehost? Или это для каждой конечной точки выставлено?

Мне кажется, что здесь есть несколько вариантов, но это зависит от того, что именно вы хотите сделать. Если инициализация для каждого хоста, то почему бы просто не использовать собственную реализацию ServiceHost и выполнить там инициализацию вместо службы?.

Я спрашиваю об этом, в частности, потому что из вашего описания не ясно, каков режим экземпляра вашего сервиса или когда вы хотите запустить сам код инициализации.

Если по какой-либо причине вы не можете этого сделать, другой вариант, который стоит изучить, может состоять в том, чтобы выполнить инициализацию в пользовательском IServiceBehavior во время ApplyDispatchBehavior (), где у вас есть доступ к хосту службы и описанию службы. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...