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.