Variable aus Web.Config lesen

Antworten:

71

Ich würde Ihnen empfehlen, web.config nicht von Ihrer Seite aus zu ändern, da Ihre Anwendung bei jeder Änderung neu gestartet wird.

Sie können web.config jedoch mit lesen System.Configuration.ConfigurationManager.AppSettings

Muhammad Akhtar
quelle
Vielen Dank, Herr Muhammed. Was raten Sie mir, um eine Variable an einem öffentlichen Ort zu speichern, der geändert werden kann, ohne die Webanwendung neu zu definieren? Vielen Dank im Voraus
Amira Elsayed Ismail
1
Sie können solche Variablen in einer verschlüsselten XML-Datei speichern.
Vamyip
1
Ja, XML-Datei ist die bessere Idee. Oder Sie können es in der Datenbank speichern und in application_start (Global.asax) hinzufügen, in die Anwendungsvariable einfügen und diese in der Anwendung verwenden. Diese Variablen werden in der Anwendung nur einmal zugewiesen. Wenn Ihre Anwendung neu gestartet wird, werden sie erneut zugewiesen.
Muhammad Akhtar
Vielen Dank Mr.Vamyip und Mr.Muhammed für Ihre Hilfe
Amira Elsayed Ismail
142

Gegeben die folgende web.config:

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

Anwendungsbeispiel:

using System.Configuration;

string clientId = ConfigurationManager.AppSettings["ClientId"];
string redirectUrl = ConfigurationManager.AppSettings["RedirectUrl"];
PrateekSaluja
quelle
17
+1 nette Antwort. Jedoch eine Anmerkung - Sie müssen nicht ToStringexplizit aufrufen , als Indexer auf AppSettingsRückgabewert vom Typ stringselbst
horgh
16

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

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

Um auf meine Webkonfigurationsschlüssel zuzugreifen, erstelle ich in meiner Anwendung immer eine statische Klasse. Dies bedeutet, dass ich überall dort darauf zugreifen kann, wo ich es benötige, und dass ich die Zeichenfolgen nicht in meiner gesamten Anwendung verwende (wenn sich dies in der Webkonfiguration ändert, muss ich alle Vorkommnisse durchlaufen, 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; }
    }
}
Lloyd Powell
quelle
7

Angenommen, der Schlüssel befindet sich im <appSettings>Knoten:

ConfigurationSettings.AppSettings["theKey"];

Was das "Schreiben" betrifft - einfach gesagt, nicht.

Die web.config ist nicht dafür ausgelegt. Wenn Sie einen Wert ständig ändern möchten, fügen Sie ihn in eine statische Hilfsklasse ein.

RPM1984
quelle
3

Ryan Farley hat einen großartigen Beitrag dazu in seinem Blog, einschließlich aller Gründe, warum Sie nicht zurück in web.config-Dateien schreiben sollten: Schreiben in die Konfigurationsdatei Ihrer .NET-Anwendung

CD..
quelle
0

Ich bin eine siteConfiguration-Klasse, um alle meine AppSetting auf diese Weise aufzurufen. Ich teile es, wenn es jemandem hilft.

Fügen Sie den folgenden Code in der "web.config" hinzu.

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

Jetzt können Sie eine Klasse definieren, um alle Ihre appSetting-Werte abzurufen. so was

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

Fügen Sie nun die Referenz der vorherigen Klasse hinzu und greifen Sie auf einen Schlüsselaufruf wie unten zu

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