Usuário com melhor resposta
Acessar <system.serviceModel> no arquivo de configuração com a classe ServiceModelConfigurationSection

Pergunta
-
Boa Tarde Mestres,
Estou precisando carregar o conteúdo da sessão <system.serviceModel> para minha classe, onde eu irei realizar diversas manipulações.
Abaixo a sessão completa.
<system.serviceModel> <bindings> <netTcpBinding> <binding name="TcpConfig" openTimeout="00:01:00" maxReceivedMessageSize="2147483647" /> </netTcpBinding> </bindings> <client> <endpoint address="net.tcp://localhost/empresa/ClienteService.svc" binding="netTcpBinding" bindingConfiguration="TcpConfig" contract="Br.Com.Empresa.Servicos.Infraestrutura.Contratos.IClienteService" name="clientServiceConfig" /> </client> </system.serviceModel>
Andei pesquisando sobre a classe ServiceModelConfigurationSection porém não tenho ideia de como fazer isso.
Respostas
-
Boa Tarde Mestres,
Estou precisando carregar o conteúdo da sessão <system.serviceModel> para minha classe, onde eu irei realizar diversas manipulações.
O Google é seu amigo...
Read & Write <system.serviceModel> section fom app.config file in C#
http://kosiara87.blogspot.pt/2011/09/read-write-section-fom-appconfig-file.html
How to write endpoint information in app.config at runtime WCF?
http://stackoverflow.com/questions/1108210/how-to-write-endpoint-information-in-app-config-at-runtime-wcf
Trouble writing programmatic config changes for WCF
http://stackoverflow.com/questions/2380697/trouble-writing-programmatic-config-changes-for-wcf
Loading System.ServiceModel configuration section using ConfigurationManager
http://stackoverflow.com/questions/19589/loading-system-servicemodel-configuration-section-using-configurationmanagerAbraços,
Caio Proiete
Caio Proiete
Microsoft MVP, MCT, MCPD, MCTS, MCSD
http://caioproiete.net- Marcado como Resposta WillianASantos quinta-feira, 9 de agosto de 2012 14:24
Todas as Respostas
-
Amigo, bom dia
eu não entendi direito sua questão, você já tem um serviço WCF pronto e quer utiliza-lo ouv você está na dúvida de como implementar o serviço ?
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Twitter @Olavooneto
Facebook Olavo Neto
Linkedin Olavo Neto
Se for útil marque como resposta e faça um Developer feliz :) -
O Serviço já esta implementado e funcionando, estou precisando "Apenas" acessar essa sessão para gravar informações nela, e caso ela não exista tenho que criar conforme as informações mostradas no tópico acima.
Minha interface WPF vai receber informações do usuário e gravar nessa sessão.
<client> <endpoint address="net.tcp://localhost/empresa/ClienteService.svc" binding="netTcpBinding" bindingConfiguration="TcpConfig" contract="Br.Com.Empresa.Servicos.Infraestrutura.Contratos.IClienteService" name="clientServiceConfig" /> </client>
Qualquer ajuda é muuuuito importante, estou muito atrasado com isso. ;)
-
Boa Tarde Mestres,
Estou precisando carregar o conteúdo da sessão <system.serviceModel> para minha classe, onde eu irei realizar diversas manipulações.
O Google é seu amigo...
Read & Write <system.serviceModel> section fom app.config file in C#
http://kosiara87.blogspot.pt/2011/09/read-write-section-fom-appconfig-file.html
How to write endpoint information in app.config at runtime WCF?
http://stackoverflow.com/questions/1108210/how-to-write-endpoint-information-in-app-config-at-runtime-wcf
Trouble writing programmatic config changes for WCF
http://stackoverflow.com/questions/2380697/trouble-writing-programmatic-config-changes-for-wcf
Loading System.ServiceModel configuration section using ConfigurationManager
http://stackoverflow.com/questions/19589/loading-system-servicemodel-configuration-section-using-configurationmanagerAbraços,
Caio Proiete
Caio Proiete
Microsoft MVP, MCT, MCPD, MCTS, MCSD
http://caioproiete.net- Marcado como Resposta WillianASantos quinta-feira, 9 de agosto de 2012 14:24
-
Perfeito Caio,
Já tinha desistido de procurar no Google, mas o negocio é saber como procurar. :)
A melhor alternativa achei aqui.
Segue o código.
// Automagically find all client endpoints defined in app.config ClientSection clientSection = this._settings.GetSection("system.serviceModel/client") as ClientSection; ChannelEndpointElementCollection endpointCollection = clientSection.ElementInformation.Properties[string.Empty].Value as ChannelEndpointElementCollection; List<string> endpointNames = new List<string>(); foreach (ChannelEndpointElement endpointElement in endpointCollection) { endpointNames.Add(endpointElement.Name); }
- Marcado como Resposta WillianASantos quinta-feira, 9 de agosto de 2012 14:25
- Não Marcado como Resposta WillianASantos quinta-feira, 9 de agosto de 2012 20:29
-
Mais uma duvida,
Também tenho que criar a sessão caso ela não exista, como posso fazer isso?
Estou usando WPF e tenho um propriedade Chamada "EnderecoHistoricoCliente", onde guardo o Address.
public string EnderecoHistoricoCliente
{get
{ ClientSection clientSection = this._settings.GetSection("system.serviceModel/client") as ClientSection; ChannelEndpointElementCollection endpointCollection = clientSection.ElementInformation.Properties[string.Empty].Value as ChannelEndpointElementCollection; if (endpointCollection.Count > 0) { return endpointCollection[0].Address.AbsoluteUri.ToString(); } else { ChannelEndpointElement ep = new ChannelEndpointElement();
// Isso esta Certo?? ep.Address = new Uri("net.tcp://localhost/peggasus/ClienteService.svc"); ep.Binding = "netTcpBinding"; ep.BindingConfiguration = "TcpConfig"; ep.Contract = "Br.Com.Peggasus.Servicos.Infraestrutura.Contratos.IClienteService"; ep.Name = "clientServiceConfig"; this._settings.Save(ConfigurationSaveMode.Full); ConfigurationManager.RefreshSection("system.serviceModel"); return endpointCollection[0].Address.AbsoluteUri.ToString(); } } set { if (value.Substring(0, 10).Equals("net.tcp://")) { ClientSection clientSection = this._settings.GetSection("system.serviceModel/client") as ClientSection; foreach (ChannelEndpointElement ep in clientSection.Endpoints) { if (ep.Name == "clientServiceConfig") { ep.Address = new Uri(value); } } this._settings.Save(); } else { MessageBox.Show("O endereço informado não é valido, o mesmo deve iniciar com 'net.tcp://'.", "Atenção", MessageBoxButton.OK, MessageBoxImage.Warning); } }
}
Mas como não esta no SET ele não altera!!!
Desculpem tantas duvidas, é que sou iniciante no WCF. :
- Editado WillianASantos quinta-feira, 9 de agosto de 2012 20:26