在应用程序重新启动之前,不会刷新配置文件

时间:2013-12-24 12:02:06

标签: c# .net app-config

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

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

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

1 个答案:

答案 0 :(得分:1)

问题是您正在尝试刷新名为key的部分,该部分不存在。您需要将此RefreshSection()的来电替换为:

ConfigurationManager.RefreshSection("appSettings");

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

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

如果找不到与提供给ConfigurationManager的名称相匹配的部分,RefreshSection()显然不会引发错误。