生产中常常会遇到修改配置的状况,可是又须要重启应用程序,是否是有点小烦躁....
下面了解下在不重启状况下,实现配置更新实时生效html
public static void SetConfig(string key, string value) { Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); if (configuration.AppSettings.Settings[key] != null) { configuration.AppSettings.Settings[key].Value = value; }else { configuration.AppSettings.Settings.Add(key,value); } configuration.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings");//节点刷新 }
出于性能考虑,对ConfigurationManager采用缓存策略,若要读取新值,务必调用ConfigurationManager的RefreshSection刷新,强制下次检索时从磁盘从新读取。具体参见:https://www.xuebuyuan.com/36381.html
注意,为准确获取应用程序配置文件建议使用缓存
string assemblyCfgFile = Assembly.GetEntryAssembly().Location; string appDomainCfgFile = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
不然调试时程序使用的是 xxx.vshost.exe和xxx.vshost.exe.config
另一种方法是利用反射,具体参见:https://www.cnblogs.com/shuxiaolong/p/20160907_1432.htmlapp