Manipulando o Web.Config – Armazenando e Recuperando Dados

Olá pessoal, neste artigo mostrarei como armazenar e recuperar dados do arquivo Web.Config em uma aplicação ASP.NET.

Faço este artigo com base na videoaula de Bruno Belizário, do Portal Linha de Código, mediante autorização do mesmo. Acompanhem o passo-a-passo:

Como muitos devem saber, o Web.Config é o arquivo principal de configuração de uma aplicação ASP.NET. Este arquivo já vem com diversas configurações padrão, mais podemos adicionar novas seções dentro dele, criando assim novas opções de acordo com nossas necessidades.

Vá em File > New Project (CTRL + SHIFT + N), escolha o template ASP.NET Web Application e dê o nome de ExemploWebConfig, como a Figura 01 nos mostra:

Figura 01 – Criação do projeto

Após a criação da aplicação, abra o Web.Config e crie uma seção que será responsável por armazenar dados sobre o ambiente da aplicação com o cliente, se está em homologação ou produção (lembrando que este é um exemplo fictício, seguindo a videoaula de Bruno Belizário).

Crie uma classe que será o tipo de dados que irá estruturar minhas informações. Na Solution Explorer (CTRL + W + S), vá em Add > New Class, dê o nome de InformacoesAmbiente.cs e clique em OK, como é ilustrado na Figura 02.

Figura 02 – Criação da classe

Agora vá ao Web.Config, em cima de </configSections>, crie uma nova seção como pode ser visto na Listagem 01:

Listagem 01 – Criação de uma Seção no Web.Config


<section name="ConfigAmbiente" type="ExemploWebConfig.InformacoesAmbiente, ExemploWebConfig"/>

Como pode ser visto, uso os atributos name, para dar um nome à seção, type, para especificar o namespace + o nome da classe que acabamos de criar e o namespace novamente.

Agora, entre appSettings e connectionStrings, vamos descrever os dados da seção que acabamos de criar e criar alguns atributos, como pode ser visto na Listagem 02.

Listagem 02 – Descrição dos dados da seção criada


<ConfigAmbiente Ambiente="Producao" Database="DBProducao"/>

Criei duas propriedades, uma informando qual é o ambiente da aplicação e outra informando qual é o database que estamos trabalhando. Neste exemplo é o de Produção.

Agora vamos criar as propriedades referentes às declaradas no Web.Config. Volte à classe criada anteriormente. Temos que fazer com que nossa classe implemente uma interface específica (IConfigurationSectionHandler) para trabalhar com valores vindos do Web.Config, como pode ser ilustrado na Figura 03:

Figura 03 – Implementação da Interface IConfigurationSectionHandler

Como você pode ver na imagem acima, quando implementamos esta interface, o Visual Studio já nos sugere que a declaremos em nosso código. Clique na 1ª opção para implementá-la.

OBS: Se você não conseguir acessar esta interface, é porque não foi declarado o namespace System.Configuration, não se esqueça dele.

Antes de criarmos as propriedades em nossa classe, temos que usar os atributos de configuração, como pode ser visto na Figura 04.

Figura 04 – Atributos de Configuração do ConfigurationProperty

Uso o ConfigurationProperty, que espera o nome da propriedade, que no nosso exemplo é Producao, e o atributo IsRequired como true, que informa que ela é obrigatória.

Após isso, crie as seguintes propriedades, ambas já “setadas” com o ConfigurationProperty, ilustradas na Listagem 03.

Listagem 03 – Criação das Propriedades, que se utilizam do ConfigurationProperty



[ConfigurationProperty("Ambiente", IsRequired = true)]

public string Ambiente { get; set; }

[ConfigurationProperty("Database", IsRequired = true)]

public string Database { get; set; }


Agora no método que foi criado pela implementação, vamos alimentar as propriedades como pode ser visto na Listagem 04.

Listagem 04 – Alimentando as propriedades



public object Create(object parent, object configContext, System.Xml.XmlNode section)

{

Ambiente = section.Attributes["Ambiente"].Value;

Database = section.Attributes["Database"].Value;

return this;

}


Resumindo, nossa classe InformacoesAmbiente é um tipo que irá armazenar e recuperar os dados do Web.Config para minha aplicação. Lá no Web.Config criei uma seção, com suas propriedades que estão descritas em minha classe, que implementa o tipo da seção do Web.Config, que usa a implementação IConfigurationSectionHandler.

Finalizando, dentro deste método Create, passamos as variáveis Ambiente e Database, criadas acima, que recebem os atributos referentes às propriedades criadas em minha seção do Web.Config.

Agora vá ao Default.aspx e crie dois labels e dois textboxes, para que fiquem como pode ser visto na Figura 05.

Figura 05 – Default.aspx

Os Textboxes irão exibir as informações armazenadas no Web.Config. Altere o ID deles para txtAmbiente e txtBancoDados, respectivamente.

Agorá vá a página de códigos da Default.aspx e crie um método chamado RecuperaDados, como é ilustrado abaixo, na Listagem 05:

Listagem 05 – Método RecuperaDados



private void RecuperaDados()

{

try

{

//Instancio a classe InformacoesAmbiente

InformacoesAmbiente objInfo = new InformacoesAmbiente();

//Faço um Cast(conversão) em meu objeto instanciado e uso o método GetSection

//para recuperar os dados da seção ConfigAmbiente que foi criada no Web.Config

objInfo = (InformacoesAmbiente)ConfigurationManager.GetSection("ConfigAmbiente");

//Com as informações armazenadas passo os valores das propriedades aos textboxes

txtAmbiente.Text = objInfo.Ambiente;

txtBancoDados.Text = objInfo.Database;

}

catch (Exception ex)

{

throw new Exception(ex.Message);

}

}


Agora chame o método no Page_Load da página, como visto na Listagem 06:

Listagem 06 – Chamada do método no evento Page_Load



protected void Page_Load(object sender, EventArgs e)

{

RecuperaDados();

}


Salve o projeto e compile. Irá aparecer a mensagem para você modificar o Web.Config para permitir a compilação, clique em OK e aguarde. A Figura 06 ilustra os valores apresentados.

Figura 06 – Valores originais

Dessa forma vemos sendo preenchido os textboxes com os valores recuperados do Web.Config.

Faça um teste e altere os valores do Ambiente e do Database para Homologação e DBHomologacao, respectivamente, compile e veja o resultado, ilustrado pela Figura 07:

Figura 07 – Valores após a alteração

Assim finalizo o artigo. Muito obrigado a todos!

Para quem se interessar, disponibilizo o código fonte desse projeto aqui.

Créditos à Bruno Belizário, que fez a videoaula e ao Portal Linha de Código, por onde pude baixá-la (mediante assinatura), estudá-la e posteriormente fazer este artigo.

Quaisquer dúvidas mandem emails para wellingtonbalbo@gmail.com ou deixem nos comentários deste artigo que responderei o mais rápido possível.

Até o próximo artigo!