Heim > Backend-Entwicklung > C++ > Warum behält „ConfigurationManager.AppSettings.Set' App.Config-Änderungen nicht bei?

Warum behält „ConfigurationManager.AppSettings.Set' App.Config-Änderungen nicht bei?

Patricia Arquette
Freigeben: 2024-12-31 10:32:17
Original
931 Leute haben es durchsucht

Why Doesn't `ConfigurationManager.AppSettings.Set` Persist App.Config Changes?

App.Config-Wertänderungsproblem

Im bereitgestellten Codeausschnitt wird versucht, einen Wert in der App.Config-Datei zu ändern . Diese Änderung bleibt jedoch nicht wie erwartet bestehen. Um die Ursache dieses Problems zu ermitteln, untersuchen wir den bereitgestellten Code und untersuchen mögliche Probleme.

Das Codesegment:

lang = "Russian";
private void Main_FormClosing(object sender, FormClosingEventArgs e)
{
     System.Configuration.ConfigurationManager.AppSettings.Set("lang", lang);
}
Nach dem Login kopieren

ändert tatsächlich den Wert des Schlüssels „lang“ im App.Config-Datei. Wie in der Antwort hervorgehoben, erfolgt diese Änderung jedoch ausschließlich im Speicher und wird nicht in der physischen Konfigurationsdatei gespeichert.

Der Schlüssel zur Lösung dieses Problems liegt in der Erkenntnis, dass ConfigurationManager.AppSettings.Set("lang", lang) nimmt nur vorübergehende Änderungen im Speicher vor. Um diese Änderungen an der App.Config-Datei beizubehalten, sind zusätzliche Schritte erforderlich.

Die Antwort führt einen überarbeiteten Codeausschnitt ein, der speziell auf eine Konsolenanwendung zugeschnitten ist:

class Program
{
    static void Main(string[] args)
    {
        UpdateSetting("lang", "Russian");
    }

    private static void UpdateSetting(string key, string value)
    {
        Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        configuration.AppSettings.Settings[key].Value = value;
        configuration.Save();

        ConfigurationManager.RefreshSection("appSettings");
    }
}
Nach dem Login kopieren

In diesem Code:

  1. ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None) wird verwendet, um die App.Config-Datei in einem beschreibbaren Zustand zu öffnen state.
  2. Das gewünschte Schlüssel-Wert-Paar wird dann mit „configuration.AppSettings.Settings[key].Value = value“ geändert.
  3. Am wichtigsten ist, dass die Methode „configuration.Save()“ aufgerufen wird Behalten Sie diese Änderungen in der App.Config-Datei bei.
  4. Abschließend wird ConfigurationManager.RefreshSection("appSettings") verwendet, um die geladene App.Config zu aktualisieren Abschnitt, um sicherzustellen, dass alle nachfolgenden Abrufvorgänge die aktualisierten Werte lesen.

Durch die Nutzung dieses aktualisierten Codes werden die an der App.Config-Datei vorgenommenen Wertänderungen nun erfolgreich beibehalten, wodurch das Problem behoben und dies ermöglicht wird gewünschte Spracheinstellung ändern.

Das obige ist der detaillierte Inhalt vonWarum behält „ConfigurationManager.AppSettings.Set' App.Config-Änderungen nicht bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage