1 using System; 2 using System.Configuration; 3 using System.Web; 4 /// <summary> 5 /// ConfigurationOperator 的摘要说明 6 /// </summary> 7 8 namespace CarpaERP.UpgradePackage_CJ 9 { 10 public class ConfigurationOperator 11 { 12 private Configuration config; 13 private string configpath = string.Empty; 14 public ConfigurationOperator(string path) 15 { 16 config = System.Configuration.ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap() { ExeConfigFilename = path }, ConfigurationUserLevel.None); 17 //config = ConfigurationManager.i 18 } 19 /// <summary> 20 /// 设置应用程序配置节点,如果已经存在此节点,则会修改该节点的值,否则添加此节点 21 /// </summary> 22 /// <param name="key">节点名称</param> 23 /// <param name="value">节点值</param> 24 public void SetAppSetting(string key, string value) 25 { 26 AppSettingsSection appSetting = (AppSettingsSection)config.GetSection("appSettings"); 27 if (appSetting.Settings[key] == null)//如果不存在此节点,则添加 28 { 29 appSetting.Settings.Add(key, value); 30 } 31 else//如果存在此节点,则修改 32 { 33 appSetting.Settings[key].Value = value; 34 } 35 this.Save(); 36 this.Dispose(); 37 } 38 /// <summary> 39 /// 设置数据库连接字符串节点,如果不存在此节点,则会添加此节点及对应的值,存在则修改 40 /// </summary> 41 /// <param name="key">节点名称</param> 42 /// <param name="value">节点值</param> 43 public void SetConnectionString(string key, string connectionString) 44 { 45 ConnectionStringsSection connectionSetting = (ConnectionStringsSection)config.GetSection("connectionStrings"); 46 if (connectionSetting.ConnectionStrings[key] == null)//如果不存在此节点,则添加 47 { 48 ConnectionStringSettings connectionStringSettings = new ConnectionStringSettings(key, connectionString); 49 connectionSetting.ConnectionStrings.Add(connectionStringSettings); 50 } 51 else//如果存在此节点,则修改 52 { 53 connectionSetting.ConnectionStrings[key].ConnectionString = connectionString; 54 } 55 } 56 /// <summary> 57 /// 保存所作的修改 58 /// </summary> 59 private void Save() 60 { 61 config.Save(); 62 config = null; 63 } 64 private void Dispose() 65 { 66 if (config != null) 67 { 68 config.Save(); 69 } 70 } 71 } 72 }
发现很多人对OpenMappedExeConfig用法存在疑问,下面给出正确读取web.config的位置的方法
使用OpenMappedExeConfig方法,
代码如下:
System.Configuration.Configuration _Configuration = null;
_Configuration = System.Configuration.ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap() { ExeConfigFilename = CONFIGURATION_FILE_NAME }, ConfigurationUserLevel.None);
这个是正确用法
CONFIGURATION_FILE_NAME 为你的config地址