ホームページ > バックエンド開発 > C++ > 「ConfigurationManager.AppSettings.Set」が App.Config の変更を保持しないのはなぜですか?

「ConfigurationManager.AppSettings.Set」が App.Config の変更を保持しないのはなぜですか?

Patricia Arquette
リリース: 2024-12-31 10:32:17
オリジナル
945 人が閲覧しました

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

App.Config 値変更の難題

提供されたコード スニペットでは、App.Config ファイル内の値を変更しようとしています。 。ただし、この変更は期待どおりに持続しません。この問題の原因を特定するために、提供されたコードを詳しく調べて、潜在的な問題を調べてみましょう。

コード セグメント:

lang = "Russian";
private void Main_FormClosing(object sender, FormClosingEventArgs e)
{
     System.Configuration.ConfigurationManager.AppSettings.Set("lang", lang);
}
ログイン後にコピー

実際には、 App.Config ファイル。ただし、応答で強調されているように、この変更はメモリ内でのみ発生し、物理構成ファイルには永続化されません。

この問題を解決する鍵は、ConfigurationManager.AppSettings.Set("lang", lang) は一時的なメモリ内変更のみを行います。これらの変更を App.Config ファイルに永続化するには、追加の手順が必要です。

応答には、コンソール アプリケーション向けに特別に調整された改訂されたコード スニペットが導入されています。

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");
    }
}
ログイン後にコピー

このコード内:

  1. ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None) は、書き込み可能な状態の App.Config ファイル。
  2. 必要なキーと値のペアは、configuration.AppSettings.Settings[key].Value = value.
  3. を使用して変更されます。最も重要なのは、構成です。 Save() メソッドが呼び出され、これらの変更を App.Config ファイルに保存します。
  4. 最後に、 ConfigurationManager.RefreshSection("appSettings") は、読み込まれた App.Config セクションを更新するために使用され、後続の取得操作で更新された値が確実に読み取られるようにします。

この更新されたコードを利用することで、値の変更が行われます。 App.Config ファイルは正常に永続化され、問題が解決され、必要な言語設定を変更できるようになりました。

以上が「ConfigurationManager.AppSettings.Set」が App.Config の変更を保持しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート