Я следил за этой статьей Microsoft по установке службы WCF как службы Windows ( с netTCPbinding).
Ниже приведен код для настройки объявления со стороны сервиса:
protected override void OnStart(string[] args)
{
if (myServiceHost != null)
{
myServiceHost.Close();
}
myServiceHost = new ServiceHost(typeof(MonitoringService));
ServiceDiscoveryBehavior serviceDiscoveryBehavior = new ServiceDiscoveryBehavior();
serviceDiscoveryBehavior.AnnouncementEndpoints.Add(new UdpAnnouncementEndpoint());
myServiceHost.Description.Behaviors.Add(serviceDiscoveryBehavior);
myServiceHost.Description.Endpoints.Add(new UdpDiscoveryEndpoint());
myServiceHost.Open();
}
Проблема, с которой я столкнулся, заключается в том, что как только служба станет доступной (скажем, после перезапуска), она уведомит клиента о том, что она вернулась, но это уведомление отправляется клиенту два раза, и, следовательно, он пытается выполнить некоторую очистку два раза.
Ниже приводится подробная информация о службе, в которой она работает. (2772 - это PID службы).
Я подозреваю, что эта служба (по какой-то причине) прослушивает "два раза" один и тот же порт (я не знаю, как это возможно), как мы можем видеть в двух строках TCP, статус прослушивает. Это может быть причиной, по которой я думаю, что событие Online запускается на стороне клиента два раза после того, как служба подключается к сети.
Пожалуйста, предоставьте свой вклад. Для установки я выполнил те же шаги, что и в приведенной выше ссылке.
ИЗМЕНИТЬ
Почему эта служба отображается дважды, даже для одного и того же порта?