Config文件的读和写
下面的仅显示了对appSettings的读和写,自己可以对其进行扩展!下面不仅适用于App.config,也适用于Web.config,不过,对于Web.config的写操作会造出网站的重启!
using System.Reflection; using System.Configuration; namespace zyjTools { public static class ConfigHelper { #region 扩展方法 /// <summary> /// 更新Appsetting中的某个key的值 /// </summary> /// <param name="keyStr">key值</param> /// <param name="valueStr">value值</param> /// <param name="refreshType">刷新类型,1,刷新文件缓存中的配置项,2,刷新当前内存中的配置项</param> private static void UpdateConfig(string keyStr, string valueStr, bool IsRuntime) { Configuration config; if (!IsRuntime) { //设置并刷新文件缓存中的app.config,用于下次程序启动,并不影响当前程序内存中的配置 string assemblyConfigFile = Assembly.GetEntryAssembly().Location; config = ConfigurationManager.OpenExeConfiguration(assemblyConfigFile); } else { //设置并刷新内存(runtime)的app.config,用于当前启动的程序 config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); } AppSettingsSection appSettings = (AppSettingsSection)config.GetSection("appSettings"); appSettings.Settings.Remove(keyStr); appSettings.Settings.Add(keyStr, valueStr); config.Save(ConfigurationSaveMode.Modified); if (IsRuntime) { ConfigurationManager.RefreshSection("appSettings"); } } private static void UpdateConfig_cache(string keyStr, string valueStr) { UpdateConfig(keyStr, valueStr, false); } private static void UpdateConfig_runtime(string keyStr, string valueStr) { UpdateConfig(keyStr, valueStr, true); } /// <summary> /// 设置App.config的AppSettings节点下key对应的键值 /// </summary> /// <param name="key"></param> public static void SetConfig(string keyStr, string valueStr) { UpdateConfig_cache(keyStr, valueStr); UpdateConfig_runtime(keyStr, valueStr); } /// <summary> /// 获取App.config的AppSettings节点下key对应的键值,如果key有多个标签对应,多个值以逗号隔开 /// </summary> /// <param name="key">键值</param> /// <returns></returns> public static string GetConfig(string key) { string r = ConfigurationManager.AppSettings[key]; return r==null?"":r; } #endregion } }