• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

skcratch

[Resolvido] - ASP .NET Web.config alterado dinamicamente

6 mensagens neste tópico

Viva!

Neste momento, estou a desenvolver uma aplicação cujo deploy deverá ser feito em muitos locais distintos, com as suas especificidades próprias. No entanto, algumas das configurações que serão guardadas neste fase no ficheiro web.config da aplicação, poderão ter que ser alteradas no futuro. Sendo assim, foi fornecida uma interface ao utilizador da aplicação, para que possa efectuar as referidas alterações.

O método que estou a utilizar neste momento, é a seguir apresentado:

protected void EditConfigButton(string _key, string _value)
    {
        Configuration objConfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~/Projecto");
        AppSettingsSection objAppsettings = (AppSettingsSection)objConfig.GetSection("appSettings");
        //Edit
        if (objAppsettings != null)
        {
            objAppsettings.Settings[_key].Value = _value;
            objConfig.Save(ConfigurationSaveMode.Full);
        }
    }

Basicamente, este método, dado uma determinada chave, actualiza o valor correspondente. No entanto, este método é invocado individualmente para cada entrada do ficheiro web.config que seja passível de ser editada. Sendo assim, o processo torna-se lento, já que o número de entradas é bastante elevado.

Por outro lado, na interface referida anteriormente, o controlo TextBox onde o utilizador pode inserir o novo valor, é lido de forma individual, sendo um exemplo fornecido a seguir:

private string valorTeste = WebConfigurationManager.AppSettings["chaveTeste"];

Mais uma vez, como são muitas entradas, este processo é muito lento na inicialização. Como possível melhoria, estava a pensar fazer o load do web.config para memória e fazer a leitura/escrita quando necessário.

Acham que desta forma poderia ter um aumento de performance?

Grato desde já pela ajuda,

Cumps!

:D

P.S. -> Desculpem o tópico tão longo!  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A modificação do web.config se tem mesmo q ser por uma aplicação, deve ter uma página web (ou web form, como preferires) propria para a sua edição.

Quando acederes a essa página, aí sim, podes carregar tudo para memória.

No entanto, a performance da edição desse ficheiro não é mto importante, pq n é uma coisa para andar a mexer com frequencia.

Mas na minha opinião, o web.config n devia ser alterado por utilizadores através de uma aplicação, mas sim por pessoas com as competencias técnicas necessárias.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva!

Compreendo o que queres dizer mas existem certas parametrizações que julgo que devem estar no web.config e que fazem sentido que seja o administrador da aplicação a poder alterar.

E sim, a performance é algo que não fundamental neste caso em particular. Se calhar vou optar por manter a abordagem inicial.

Obrigado pela ajuda!

Cumps!

:D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Antes da edição do web.config, convém fazeres sempre um backup do original.

Só se toda a edição correr bem é q fazes a substituição.

Podes adicionar uma data ao nome do ficheiro, assim manténs backups das actualizações.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva!

No plano ideal, esse controlo de versões (se assim se pode dizer), deveria ser feito programaticamente, certo?

Cumps!

:)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora