Usuário com melhor resposta
Dúvida em uri dinamica

Pergunta
-
Pessoal seguinte, tenho um metodo que lista algumas coisas dos clientes da rede. Terei que executá-lo algumas vezes no dia e em todas as máquinas. Hoje o método está assim, mas futuramente ele vai salvar todos os dados obtidos de todos os computadores em um arquivo texto:
Code Blockprivate void retonaLista()
{
listBox1.Items.Clear();
using (proxy.MicroClient mic = new Cliente.proxy.MicroClient())
{
proxy.clnMicro micro = new Cliente.proxy.clnMicro();
micro = mic.getMicro(txtPesquisa.Text.Trim());
txtId.Text = micro.Id.ToString();
txtMicro.Text = micro.Micro;
txtIp.Text = micro.Ip;
foreach (Cliente.proxy.clnSoft so in micro.Software)
{
listBox1.Items.Add(so.Soft + " - " + so.Path);
}
}
}
Porém o método acima utiliza um proxy pre-configurado que se conecta a apenas uma máquina que está expondo o serviço. Eu teria que mudar o IP das máquinas no endpointadress para que a rotina percorresse todos os micros da rede.
Como posso fazer isso via programação, pois os números de ip e nomes das máquinas eu tenho no bd, ai era só concatenar com o endereço (ex: "net.tcp://localhost:5000/Micro" ) colocando o ip ou o nome do computador. Só não sei como mudar esse IP ou nome em tempo de execução dentro do laço foreach...
O mais perto que consegui chegar foi isso:
Code Blockprivate void button1_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
ServiceEndpoint end = new ServiceEndpoint(ContractDescription.GetContract(typeof(IMicro)),new NetTcpBinding(), new EndpointAddress("net.tcp://localhost:5000/Micro"));
ChannelFactory<IMicro> factory = new ChannelFactory<IMicro>(end);
IMicro mic = factory.CreateChannel();
using (mic as IDisposable)
{
clnMicro micro = new clnMicro();
micro = mic.getMicro(txtPesquisa.Text.Trim());
txtId.Text = micro.Id.ToString();
txtMicro.Text = micro.Micro;
txtIp.Text = micro.Ip;
foreach (clnSoft so in micro.Software)
{
listBox1.Items.Add(so.Soft + " - " + so.Path);
}
}
}
Acho que o caminho é esse, mais não consegui mudar o Uri em tempo de execução...
Grato
Sanses