Acessando variáveis no web.config

Ola a todos.

Muito tempo se passou desde meu último post e peço desculpas, mas tudo na vida da gente acontece por alguma razão e desde minha última aparição muita coisa mudou, meu emprego, minha cidade atual, dentre outras, bueno, nada disso justifica eu sei, mas tive de repensar em um monte de coisas de um dia para o outro e acabei me esquecendo desse projeto, por isso as desculpas.

Recentemente estive trabalhando em um projeto realmente pequeno com apenas três tabelas no DBMS e fiquei me perguntando se realmente havia a necessidade de criar uma quarta tabela apenas para guardar parâmetros… Decidi que não, não queria.

Então lembrei que é comum no desenvolvimento tradicional (aka “a mão”) armazenar configurações de acesso rápido no arquivo web.config, então resolvi que iria fazer isso.

Tive alguns problemas quando tentei gravar valores no web.config utilizando a classe ConfigurationManager, depois fui descobrir que por motivos de segurança a gravação não foi implementada, o método para escrever até existe e ao ser executado não retorna erro, mas o web.config simplesmente não é atualizado. Fiquei um pouco confuso, mas depois analisando com calma vi que era uma sábia decisão… hehehehe

A solução foi mais simples que eu pensava, existe uma classe no C# que acessa diretamente a seção appSettings de dentro do web.config, a única coisa que faltava era criar o Wrapper, o External Object e utilizá-los.

O resultado final disso acabei utilizando como piloto para meu primeiro projeto no marketplace do GeneXus.

Resumindo, o que você precisa fazer é:

1 –  Baixar a extensão nessa URL: http://marketplace.genexus.com/product.aspx?web.config.reader
2 – Importar o arquivo “WebConfigReader.xpz” para a sua base de conhecimento;
3 – Certifique-se que o arquivo ConfigManager foi corretamente copiado para o diretório da aplicação <app>\bin; (Os arquivos ConfigManager.cs e ConfigManager.dll estão embutidos no .xpz);
4 – Efetue um build all;
5 – Execute a webpanel WebConfigReader para testar;

Obs.: Esse External Object foi criado utilizando GeneXus X Evolution 2 Upgrade 2, mas acredito que deva funcionar também na Evolution 1.

Sinta-se livre para utilizá-la onde achar melhor, e por favor, se precisar de ajuda não hesite em perguntar.

Se desejar, no .zip está o fonte e um .bat para auxiliar na compilação.

Abraços a todos e até a próxima.