Descoberta WCF com hosts de serviço usando net.tcp: //0.0.0.0: 0 / blah anuncia net.tcp: //0.0.0.0: 0 / blah

Eu queria um serviço detectável que ouvisse todas as interfaces e publicasse anúncios de descoberta para cada interface. Eu estava esperando poder configurar isso no arquivo de configuração usando tcp: //0.0.0.0: 0 / blah como o terminal de serviço. Mas quando eu executo o código abaixo, os anúncios que ele envia usam tcp: //0.0.0.0: 0 / blah como o EndpointAddress que é inútil para os clientes.

Eu quero receber anúncios para cada endpoint derivado de tcp: / / 0.0.0.0: 0 / blah e eu preferiria usar um arquivo de configuração e não uma configuração de host de serviço programático como abaixo. Alguma idéia para uma solução alternativa?

    [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();
    }

questionAnswers(2)

yourAnswerToTheQuestion