Come posso aggiungere e leggere il valore dal file web.config ?
Come posso aggiungere e leggere il valore dal file web.config ?
Risposte:
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
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"];
ToString
esplicitamente, poiché gli indicizzatori sul AppSettings
valore restituito del tipo string
stesso
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; }
}
}
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.
Ryan Farley ha un ottimo post su questo nel suo blog, inclusi tutti i motivi per non riscrivere nei file web.config: Scrivere nel file di configurazione della tua applicazione .NET
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");