Rumah > pembangunan bahagian belakang > C++ > Mengapa `ConfigurationManager.AppSettings.Set` Tidak Berterusan Perubahan App.Config?

Mengapa `ConfigurationManager.AppSettings.Set` Tidak Berterusan Perubahan App.Config?

Patricia Arquette
Lepaskan: 2024-12-31 10:32:17
asal
945 orang telah melayarinya

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

Kuasari Pengubahsuaian Nilai App.Config

Dalam coretan kod yang disediakan, percubaan dibuat untuk mengubah suai nilai dalam fail App.Config . Walau bagaimanapun, pengubahsuaian ini tidak berterusan seperti yang diharapkan. Untuk mengenal pasti punca masalah ini, mari kita mendalami kod yang disediakan dan meneroka isu yang berpotensi.

Segmen kod:

lang = "Russian";
private void Main_FormClosing(object sender, FormClosingEventArgs e)
{
     System.Configuration.ConfigurationManager.AppSettings.Set("lang", lang);
}
Salin selepas log masuk

memang mengubah suai nilai kekunci "lang" dalam Fail App.Config. Walau bagaimanapun, seperti yang diserlahkan dalam respons, pengubahsuaian ini berlaku semata-mata dalam ingatan dan tidak diteruskan pada fail konfigurasi fizikal.

Kunci untuk menyelesaikan isu ini terletak pada mengenali ConfigurationManager.AppSettings.Set("lang", lang) hanya membuat perubahan sementara dalam ingatan. Untuk mengekalkan perubahan ini pada fail App.Config, langkah tambahan diperlukan.

Respons memperkenalkan coretan kod yang disemak yang disesuaikan khusus untuk aplikasi konsol:

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");
    }
}
Salin selepas log masuk

Dalam kod ini:

  1. ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.Tiada) digunakan untuk membuka fail App.Config dalam keadaan boleh tulis.
  2. Pasangan nilai kunci yang dikehendaki kemudiannya diubah suai menggunakan konfigurasi.AppSettings.Settings[key].Value = nilai.
  3. Kebanyakan yang penting, kaedah configuration.Save() digunakan untuk mengekalkan perubahan ini pada App.Config fail.
  4. Akhir sekali, ConfigurationManager.RefreshSection("appSettings") digunakan untuk memuatkan semula bahagian App.Config yang dimuatkan, memastikan bahawa sebarang operasi pengambilan berikutnya membaca nilai yang dikemas kini.

Oleh memanfaatkan kod yang dikemas kini ini, pengubahsuaian nilai yang dibuat pada fail App.Config kini berjaya diteruskan, menyelesaikan isu dan membenarkan perubahan tetapan bahasa yang diingini.

Atas ialah kandungan terperinci Mengapa `ConfigurationManager.AppSettings.Set` Tidak Berterusan Perubahan App.Config?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan