Leggi variabile da Web.Config


Risposte:


71

Ti consiglio di non modificare web.config dal tuo, perché ogni volta che cambia, riavvierà l'applicazione.

Tuttavia puoi leggere web.config usando System.Configuration.ConfigurationManager.AppSettings


Grazie signor Muhammed, quindi cosa mi consiglia di fare per salvare una variabile in un luogo pubblico che può essere modificata senza riavviare l'applicazione web? Grazie in anticipo
Amira Elsayed Ismail

1
È possibile memorizzare tali variabili in un file XML crittografato.
vamyip

1
sì, il file XML è l'idea migliore. Oppure puoi memorizzarlo nel DB e aggiungere application_start (Global.asax), metterlo nella variabile dell'applicazione e usarli nell'applicazione. queste variabili vengono assegnate una sola volta nell'applicazione e se l'applicazione si riavvia, queste verranno assegnate di nuovo.
Muhammad Akhtar

Grazie mille signor Vamyip e signor Muhammed per il vostro aiuto
Amira Elsayed Ismail

143

Dato il seguente web.config:

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

Utilizzo di esempio:

using System.Configuration;

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

17
+1 bella risposta. Tuttavia una nota: non è necessario chiamare ToStringesplicitamente, poiché gli indicizzatori sul AppSettingsvalore restituito del tipo stringstesso
horgh

16

Se vuoi le basi, puoi accedere alle chiavi tramite:

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

Per accedere alle mie chiavi di configurazione web creo sempre una classe statica nella mia applicazione. Significa che posso accedervi ovunque sia necessario e non sto usando le stringhe in tutta la mia applicazione (se cambia nella configurazione web dovrei passare attraverso tutte le occorrenze cambiandole). Ecco un esempio:

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

7

Supponendo che la chiave sia contenuta all'interno del <appSettings>nodo:

ConfigurationSettings.AppSettings["theKey"];

Per quanto riguarda la "scrittura", in parole povere, non farlo.

Web.config non è progettato per questo, se cambierai costantemente un valore, inseriscilo in una classe helper statica.



0

Sono la classe siteConfiguration per chiamare tutto il mio appSetting in questo modo. Lo condivido se aiuterà qualcuno.

aggiungi il codice seguente in "web.config"

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

Ora puoi definire una classe per ottenere tutto il valore di appSetting. come questo

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

Ora aggiungi il riferimento della classe precedente e per accedere a una chiamata chiave come sotto

string appKeyStringVal= SiteConfigurationReader.appKeyString;
int appKeyIntVal= SiteConfigurationReader.appKeyInt;
int appKeyStringByPassingKey = SiteConfigurationReader.GetAppSettingsInteger("appKeyInt");
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.