【问题标题】:Config file settings not refreshing until application restart配置文件设置在应用程序重新启动之前不会刷新
【发布时间】:2014-01-12 16:16:11
【问题描述】:

正如问题标题所述,我将一些应用程序设置(当前只是一个数据库路径)保存到应用程序配置文件中。更改似乎可以保存到文件中,但是当我尝试读取新数据时,我得到一个空字符串。如果我重新启动应用程序,新数据可以正常读取,但我确实需要它来读取而无需重新启动应用程序。我的配置设置类如下。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Windows.Forms;

namespace HADDMS_Asset_Management_System
{
    public static class ConfigSettings
    {
        public static bool WriteSetting(string key, string value)
        {
            try
            {
                System.Configuration.Configuration config =
                    ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

                config.AppSettings.Settings[key].Value = value;
                config.Save(ConfigurationSaveMode.Modified);
                ConfigurationManager.RefreshSection(key);
            }
            catch (Exception e)
            {
                MessageBox.Show("Error writing to configuration settings:\r\n" + e.ToString());
                return false;
            }

            return true;
        }

        public static string ReadSetting(string key)
        {
            return ConfigurationManager.AppSettings[key];
        }

        public static string ReadSetting(int keyIndex)
        {
            return ConfigurationManager.AppSettings[keyIndex];
        }
    }
}

编辑: 我应该补充一点,我正在从发布文件夹运行应用程序。

【问题讨论】:

标签: c# .net app-config


【解决方案1】:

问题是您正在尝试刷新名为key 的部分,该部分不存在。你需要用这个替换你对RefreshSection()的调用:

ConfigurationManager.RefreshSection("appSettings");

您可以通过以下方式进行测试:

//keySection will be null
var keySection = config.GetSection(key);

当没有找到与提供给RefreshSection() 的名称匹配的部分时,ConfigurationManager 显然不会引发错误,这很有趣。

【讨论】:

  • 没错,我误解了一个部分是什么。 XML 和配置设置仍然有点新。非常感谢,节日快乐!
  • 和你一样,很高兴这是一个简单的修复
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-18
  • 1970-01-01
  • 2022-11-28
  • 2020-04-26
  • 2020-03-19
相关资源
最近更新 更多