正如问题标题所述,我正在将一些应用程序设置(当前只是数据库路径)保存到应用程序配置文件中。这些更改似乎保存到文件中,但是当我尝试读取新数据时,我得到一个空字符串。如果我重新启动应用程序,新数据会正常读取,但我确实需要它才能读取而无需重新启动应用程序。我的配置设置类如下。
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];
}
}
}
编辑: 我应该补充说我正在从发布文件夹中运行应用程序。
答案 0 :(得分:1)
问题是您正在尝试刷新名为key
的部分,该部分不存在。您需要将此RefreshSection()
的来电替换为:
ConfigurationManager.RefreshSection("appSettings");
您可以通过以下方式对此进行测试:
//keySection will be null
var keySection = config.GetSection(key);
如果找不到与提供给ConfigurationManager
的名称相匹配的部分,RefreshSection()
显然不会引发错误。