Lire la variable à partir de Web.Config

Réponses:

71

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

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

Muhammad Akhtar
la source
Merci Monsieur Muhammed, alors que me conseillez-vous de faire pour enregistrer une variable dans un lieu public qui peut être modifiée sans reformuler l'application web? Merci à l'avance
Amira Elsayed Ismail
1
Vous pouvez stocker ces variables dans un fichier XML chiffré.
vamyip
1
oui, le fichier XML est la meilleure idée. Ou vous pouvez le stocker dans DB et l'ajouter dans application_start (Global.asax), le mettre dans la variable d'application et les utiliser dans l'application. ces variables ne sont attribuées qu'une seule fois dans l'application et si votre application redémarre, elles seront à nouveau attribuées.
Muhammad Akhtar
Merci beaucoup Monsieur Vamyip et Monsieur Muhammed pour votre aide
Amira Elsayed Ismail
143

É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"];
PrateekSaluja
la source
17
+1 belle réponse. Cependant, une note - vous n'avez pas besoin d'appeler ToStringexplicitement, en tant qu'indexeurs sur la AppSettingsvaleur de retour du type stringeux
horgh
16

Si vous voulez les bases, vous pouvez accéder aux touches 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 partout où je le souhaite et que je n'utilise pas les chaînes partout dans mon application (si cela change dans la configuration Web, je devrais passer par toutes les occurrences en les modifiant). 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; }
    }
}
Lloyd Powell
la source
7

En supposant que la clé est contenue à l'intérieur du <appSettings>nœud:

ConfigurationSettings.AppSettings["theKey"];

Quant à «l'écriture» - en termes simples, non.

Le web.config n'est pas conçu pour cela, si vous allez constamment changer une valeur, mettez-la dans une classe d'assistance statique.

RPM1984
la source
0

Je suis la classe siteConfiguration pour appeler tous mes appSetting de cette façon. Je le partage si cela peut aider quelqu'un.

ajoutez le code suivant dans le "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 la 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;
        }
      }
   }
}

Maintenant, ajoutez la référence de la classe précédente et pour accéder à un appel clé comme ci-dessous

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