Maison > développement back-end > C++ > Pourquoi « ConfigurationManager.AppSettings.Set » ne conserve-t-il pas les modifications d'App.Config ?

Pourquoi « ConfigurationManager.AppSettings.Set » ne conserve-t-il pas les modifications d'App.Config ?

Patricia Arquette
Libérer: 2024-12-31 10:32:17
original
945 Les gens l'ont consulté

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

Quandaire de modification de la valeur App.Config

Dans l'extrait de code fourni, une tentative est effectuée pour modifier une valeur dans le fichier App.Config . Cependant, cette modification ne persiste pas comme prévu. Pour identifier la source de ce problème, examinons le code fourni et explorons les problèmes potentiels.

Le segment de code :

lang = "Russian";
private void Main_FormClosing(object sender, FormClosingEventArgs e)
{
     System.Configuration.ConfigurationManager.AppSettings.Set("lang", lang);
}
Copier après la connexion

modifie en effet la valeur de la clé "lang" dans le Fichier App.Config. Cependant, comme souligné dans la réponse, cette modification se produit uniquement en mémoire et n'est pas conservée dans le fichier de configuration physique.

La clé pour résoudre ce problème réside dans la reconnaissance que ConfigurationManager.AppSettings.Set("lang", lang) n'effectue que des modifications temporaires en mémoire. Pour conserver ces modifications dans le fichier App.Config, des étapes supplémentaires sont nécessaires.

La réponse introduit un extrait de code révisé spécifiquement adapté à une application console :

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");
    }
}
Copier après la connexion

Dans ce code :

  1. ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None) est utilisé pour ouvrir le fichier App.Config dans un format inscriptible state.
  2. La paire clé-valeur souhaitée est ensuite modifiée à l'aide de configuration.AppSettings.Settings[key].Value = value.
  3. Plus important encore, la méthode configuration.Save() est invoquée pour conserver ces modifications dans le fichier App.Config.
  4. Enfin, ConfigurationManager.RefreshSection("appSettings") est utilisé pour actualiser le fichier App.Config chargé. section, garantissant que toutes les opérations de récupération ultérieures lisent les valeurs mises à jour.

En exploitant ce code mis à jour, les modifications de valeur apportées au fichier App.Config sont désormais conservées avec succès, résolvant le problème et permettant le changement de paramètre de langue souhaité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal