using System; using System.Configuration; namespace ConfigurationTool { /// <summary> /// 用于XML操作 /// </summary> public class ConfigurationHelper { //定义一个用于保存静态变量的实例 private static ConfigurationHelper instance = null; //定义一个保证线程同步的标识 private static readonly object locker = new object(); //构造函数为私有,使外界不能创建该类的实例 private ConfigurationHelper() { } public static ConfigurationHelper Instance { get { if (instance == null) { lock (locker) { if (instance == null) instance = new ConfigurationHelper(); } } return instance; } } /// <summary> /// 读取指定路径下Web.config,指定key的value /// </summary> /// <param name="filePath">路径</param> /// <param name="key">key</param> /// <returns></returns> public string ReadConfiger(string filePath, string key) { ExeConfigurationFileMap map = new ExeConfigurationFileMap(); map.ExeConfigFilename = filePath; Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None); string value = config.AppSettings.Settings[key].Value; return value; } /// <summary> /// 保存指定路径下Web.config,指定key的value /// </summary> /// <param name="filePath">路径</param> /// <param name="key">key</param> /// <param name="value">value</param> /// <returns></returns> public string SaveConfiger(string filePath, string key,string value) { ExeConfigurationFileMap map = new ExeConfigurationFileMap(); map.ExeConfigFilename = filePath; Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None); //写入<add>元素的Value config.AppSettings.Settings[key].Value = value; //一定要记得保存,写不带参数的config.Save()也可以 config.Save(); //刷新,否则程序读取的还是之前的值(可能已装入内存) ConfigurationManager.RefreshSection("appSettings"); return value; } /// <summary> /// 根据key获取value /// </summary> /// <param name="key">key</param> /// <returns></returns> public string GetValueByKey(string key) { try { return ConfigurationManager.AppSettings[key]; } catch (Exception ex) { throw new Exception(ex.Message); } } /// <summary> /// 设置key对应value /// </summary> /// <param name="key">key</param> /// <param name="value">value</param> public void SetValueByKey(string key, string value) { try { //获取Configuration对象 Configuration config = System.Configuration.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); //根据Key读取<add>元素的Value //string name = config.AppSettings.Settings[key].Value; //写入<add>元素的Value config.AppSettings.Settings[key].Value = value; //增加<add>元素 //config.AppSettings.Settings.Add("url", "//www.jb51.net"); //删除<add>元素 //config.AppSettings.Settings.Remove("name"); //一定要记得保存,写不带参数的config.Save()也可以 config.Save(); //刷新,否则程序读取的还是之前的值(可能已装入内存) ConfigurationManager.RefreshSection("appSettings"); } catch (Exception ex) { throw new Exception(ex.Message); } } } }