2010-10-04 3 views
66

Wie kann ich den Wert von web.config Datei hinzufügen und lesen?Variable aus Web lesen.Config

+0

http://www.c-sharpcorner.com/uploadfile/sd_patel/webconfiginaspnet11242005061608am/webconfiginaspnet einen Schlüssel Anruf zuzugreifen. aspx –

Antwort

54

Ich würde vorschlagen, dass Sie nicht web.config von Ihrem ändern, denn jedes Mal, wenn Änderung, wird es Ihre Anwendung neu starten.

immer Sie web.config mit System.Configuration.ConfigurationManager.AppSettings

+0

Vielen Dank Mr.Muhammed, also was Sie mich beraten, um eine Variable in einem öffentlichen Ort zu speichern, die geändert werden kann, ohne die Webanwendung neu zu setzen? Danke im Advance –

+0

Sie können solche Variablen in einer verschlüsselten XML-Datei speichern. – vamyip

+0

Ja, XML-Datei ist die bessere Idee. Oder Sie können es in DB speichern und in application_start (Global.asax) hinzufügen, in Anwendungsvariable einfügen und diese in der Anwendung verwenden. Diese Variablen werden nur einmal in der Anwendung zugewiesen und wenn Ihre Anwendung neu gestartet wird, werden diese erneut zugewiesen. –

6

den Schlüssel Unter der Annahme, ist im Inneren des <appSettings> Knoten enthalten:

ConfigurationSettings.AppSettings["theKey"]; 

Wie bei "Schreiben" - einfach gesagt, tun sie nicht.

Die web.config ist nicht dafür gedacht, wenn Sie einen Wert ständig ändern, fügen Sie ihn in eine statische Hilfsklasse ein.

102

Angesichts der folgenden web.config:

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

Beispiel Nutzung:

using System.Configuration; 

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

+1 nette Antwort.Eine Anmerkung - Sie müssen 'ToString' nicht explizit aufrufen, da die Indexer von' AppSettings' den Wert des Typs 'string' selbst zurückgeben – horgh

14

Wenn Sie die Grundlagen möchten, können Sie die Schlüssel über Zugang:

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

auf meiner Web-Config-Tasten greife ich immer eine statische Klasse machen in meiner Anwendung. Es bedeutet, dass ich auf sie zugreifen kann, wo immer ich es benötige, und ich benutze die Zeichenfolgen nicht überall in meiner Anwendung (wenn es sich in der Webkonfiguration ändert, müsste ich alle Vorkommnisse durchgehen, die sie ändern). Hier ist ein Beispiel:

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

Ich bin siteConfiguration-Klasse für den Aufruf aller meine appSetting auf diese Weise. Ich teile es, wenn es irgendjemandem hilft.

den folgenden Code in der „web.config“

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

Nun fügen Sie eine Klasse definieren können alle Ihre appSetting Wert für immer. wie diese

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

nun die Referenz der vorherigen Klasse hinzufügen und

wie unten
string appKeyStringVal= SiteConfigurationReader.appKeyString; 
int appKeyIntVal= SiteConfigurationReader.appKeyInt; 
int appKeyStringByPassingKey = SiteConfigurationReader.GetAppSettingsInteger("appKeyInt");