Ler Variável de Web.Config

Respostas:

71

Eu sugiro que você não modifique o web.config do seu, porque toda vez que mudar, ele irá reiniciar o seu aplicativo.

No entanto, você pode ler web.config usando System.Configuration.ConfigurationManager.AppSettings

Muhammad Akhtar
fonte
Obrigado Sr.Muhammed, então o que você me aconselha a fazer para salvar uma variável em um local público que pode ser alterada sem redefinir o aplicativo da web? Agradecimentos antecipados
Amira Elsayed Ismail,
1
Você pode armazenar essas variáveis ​​em um arquivo XML criptografado.
vamyip
1
sim, o arquivo XML é a melhor ideia. Ou você pode armazená-lo no banco de dados e adicionar em application_start (Global.asax), colocá-lo na variável de aplicativo e usá-lo no aplicativo. essas variáveis ​​são atribuídas apenas uma vez no aplicativo e, se o aplicativo for reiniciado, elas serão atribuídas novamente.
Muhammad Akhtar,
Muito obrigado Sr..Vamyip e Sr.Muhammed por sua ajuda
Amira Elsayed Ismail
143

Dado o seguinte web.config:

<appSettings>
     <add key="ClientId" value="127605460617602"/>
     <add key="RedirectUrl" value="http://localhost:49548/Redirect.aspx"/>
</appSettings>

Exemplo de uso:

using System.Configuration;

string clientId = ConfigurationManager.AppSettings["ClientId"];
string redirectUrl = ConfigurationManager.AppSettings["RedirectUrl"];
PrateekSaluja
fonte
17
1 boa resposta. No entanto, uma observação - você não precisa chamar ToStringexplicitamente, como indexadores sobre o AppSettingsvalor de retorno do stringpróprio tipo
hora
16

Se você quiser o básico, pode acessar as chaves por meio de:

string myKey = System.Configuration.ConfigurationManager.AppSettings["myKey"].ToString();
string imageFolder = System.Configuration.ConfigurationManager.AppSettings["imageFolder"].ToString();

Para acessar minhas chaves de configuração da web, sempre faço uma classe estática em meu aplicativo. Isso significa que posso acessá-los onde quer que eu precise e não estou usando as strings em todo o meu aplicativo (se ele mudar na configuração da web, eu teria que passar por todas as ocorrências alterando-os). Aqui está um exemplo:

using System.Configuration;

public static class AppSettingsGet
{    
    public static string myKey
    {
        get { return ConfigurationManager.AppSettings["myKey"].ToString(); }
    }

    public static string imageFolder
    {
        get { return ConfigurationManager.AppSettings["imageFolder"].ToString(); }
    }

    // I also get my connection string from here
    public static string ConnectionString
    {
       get { return ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; }
    }
}
Lloyd Powell
fonte
7

Supondo que a chave esteja contida no <appSettings>nó:

ConfigurationSettings.AppSettings["theKey"];

Quanto a "escrever" - simplesmente, não.

O web.config não foi projetado para isso, se você for alterar um valor constantemente, coloque-o em uma classe auxiliar estática.

RPM1984
fonte
0

Eu sou a classe siteConfiguration por chamar todos os meus appSetting dessa maneira. Eu compartilho isso se vai ajudar alguém.

adicione o seguinte código em "web.config"

<configuration>
   <configSections>
     <!-- some stuff omitted here -->
   </configSections>
   <appSettings>
      <add key="appKeyString" value="abc" />
      <add key="appKeyInt" value="123" />  
   </appSettings>
</configuration>

Agora você pode definir uma classe para obter todos os seus valores appSetting. como isso

using System; 
using System.Configuration;
namespace Configuration
{
   public static class SiteConfigurationReader
   {
      public static String appKeyString  //for string type value
      {
         get
         {
            return ConfigurationManager.AppSettings.Get("appKeyString");
         }
      }

      public static Int32 appKeyInt  //to get integer value
      {
         get
         {
            return ConfigurationManager.AppSettings.Get("appKeyInt").ToInteger(true);
         }
      }

      // you can also get the app setting by passing the key
      public static Int32 GetAppSettingsInteger(string keyName)
      {
          try
          {
            return Convert.ToInt32(ConfigurationManager.AppSettings.Get(keyName));
        }
        catch
        {
            return 0;
        }
      }
   }
}

Agora adicione a referência da classe anterior e para acessar uma chamada de tecla como abaixo

string appKeyStringVal= SiteConfigurationReader.appKeyString;
int appKeyIntVal= SiteConfigurationReader.appKeyInt;
int appKeyStringByPassingKey = SiteConfigurationReader.GetAppSettingsInteger("appKeyInt");
reza.cse08
fonte