Обнаружение WCF с хостами службы с использованием net.tcp: //0.0.0.0: 0 / blah объявляет net.tcp: //0.0.0.0: 0 / blah

Мне нужен был обнаруживаемый сервис, который прослушивал бы все интерфейсы и публиковал объявления об обнаружении для каждого интерфейса. Я надеялся, что смогу в конечном итоге просто настроить это в файле конфигурации, используя tcp: //0.0.0.0: 0 / blah в качестве конечной точки службы. Но когда я запускаю приведенный ниже код, отправляемые им объявления используют tcp: //0.0.0.0: 0 / blah в качестве EndpointAddress, который бесполезен для клиентов.

Я хочу получать объявления для каждой конечной точки, полученной из tcp: //0.0.0.0: 0 / blah, и я бы предпочел использовать файл конфигурации, а не установку программного узла службы, как показано ниже. Есть идеи для обхода?

    [TestFixtureSetUp]
    public void SetUp()
    {
        service1 = new MyContract();
        EndpointDiscoveryBehavior discoveryBehavior = new EndpointDiscoveryBehavior();
        ServiceDiscoveryBehavior serviceDiscoveryBehavior = new ServiceDiscoveryBehavior(discoveryUri);
        serviceDiscoveryBehavior.AnnouncementEndpoints.Add(new UdpAnnouncementEndpoint(announcementUri));

        serviceHost1 = new ServiceHost(service1,
            new Uri[] {new Uri("net.pipe://localhost"), new Uri("net.tcp://0.0.0.0:0")});
        ServiceEndpoint localEndpoint1 = serviceHost1.AddServiceEndpoint(typeof (IContract),
            new NetNamedPipeBinding(),
            "/Pipe");
        ServiceEndpoint localEndpoint2 = serviceHost1.AddServiceEndpoint(typeof (IContract),
            new NetTcpBinding(),
            "/Tcp");
        localEndpoint2.Behaviors.Add(discoveryBehavior);
        serviceHost1.Description.Behaviors.Add(serviceDiscoveryBehavior);
        serviceHost1.AddServiceEndpoint(new UdpDiscoveryEndpoint(discoveryUri));

        serviceHost1.Open();
    }

Ответы на вопрос(2)

Ваш ответ на вопрос