web-dev-qa-db-fra.com

Lire la variable depuis Web.Config

Comment puis-je ajouter et lire la valeur de web.config file?

79

Je vous suggère de ne pas modifier web.config depuis votre, car à chaque changement, il redémarrera votre application.

Cependant, vous pouvez lire web.config en utilisant System.Configuration.ConfigurationManager.AppSettings

65
Muhammad Akhtar

Étant donné le web.config suivant:

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

Exemple d'utilisation:

using System.Configuration;

string clientId = ConfigurationManager.AppSettings["ClientId"];
string redirectUrl = ConfigurationManager.AppSettings["RedirectUrl"];
122
PrateekSaluja

Si vous voulez les bases, vous pouvez accéder aux clés via:

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

Pour accéder à mes clés de configuration Web, je crée toujours une classe statique dans mon application. Cela signifie que je peux y accéder à tout moment et que je n'utilise pas les chaînes dans toute ma candidature (si la configuration Web change, il faudrait que toutes les occurrences soient modifiées). Voici un exemple:

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; }
    }
}
16
ThePower

En supposant que la clé soit contenue dans le noeud <appSettings>:

ConfigurationSettings.AppSettings["theKey"];

Quant à "écrire" - simplement, ne le faites pas.

Le fichier web.config n'est pas conçu pour cela. Si vous modifiez constamment une valeur, placez-la dans une classe d'assistance statique.

6
RPM1984

Ryan Farley a publié un article sur ce sujet dans son blog, avec toutes les raisons pour lesquelles il ne faut pas écrire dans les fichiers web.config: Écriture dans le fichier de configuration de votre application .NET

3
CD..

Je suis la classe siteConfiguration pour appeler tous mes appSetting comme ceci. Je le partage si cela peut aider quelqu'un.

ajoutez le code suivant à "web.config"

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

Vous pouvez maintenant définir une classe pour obtenir toute votre valeur appSetting. comme ça 

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;
        }
      }
   }
}

Ajoutez maintenant la référence de la classe précédente et accédez à un appel de clé comme ci-dessous

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