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
Patricia ArquetteOriginal
2024-12-31 10:32:171040Durchsuche

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

ä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");
    }
}

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!

Stellungnahme:
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