配置檔案——WebApp.config檔案讀取和修改
阿新 • • 發佈:2019-02-02
using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Net.Mime; using System.Text; using System.Threading.Tasks; using System.Web; using System.Xml; namespace Infrastructure { public class WebConfigHelper { private Configuration _config; private readonly string _configPath; private readonly ConfigType _configType; /// <summary> /// 對應的配置檔案 /// </summary> public Configuration Configuration { get { return _config; } set { _config = value; } } /// <summary> /// 建構函式 /// </summary> public WebConfigHelper() { _configPath = HttpContext.Current.Request.ApplicationPath; Initialize(); } /// <summary> /// 建構函式 /// </summary> /// <param name="configPath">.config檔案的位置</param> /// <param name="configType">.config檔案的型別,只能是網站配置檔案或者應用程式配置檔案</param> public WebConfigHelper(string configPath, ConfigType configType) { this._configPath = configPath; this._configType = configType; Initialize(); } //例項化configuration,根據配置檔案型別的不同,分別採取了不同的例項化方法 private void Initialize() { //如果是WinForm應用程式的配置檔案 if (_configType == ConfigType.ExeConfig) { _config = ConfigurationManager.OpenExeConfiguration(_configPath); } else //WebForm的配置檔案 { _config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(_configPath); } } public string GetValueByKey(string key) { return ConfigurationManager.AppSettings[key]; } /// <summary> /// 新增應用程式配置節點,如果已經存在此節點,則會修改該節點的值 /// </summary> /// <param name="key">節點名稱</param> /// <param name="value">節點值</param> public void AddAppSetting(string key, string value) { var appSetting = (AppSettingsSection)_config.GetSection("appSettings"); if (appSetting.Settings[key] == null) //如果不存在此節點,則新增 { appSetting.Settings.Add(key, value); } else //如果存在此節點,則修改 { ModifyAppSetting(key, value); } } /// <summary> /// 修改應用程式配置節點,如果不存在此節點,則會新增此節點及對應的值 /// </summary> /// <param name="key">節點名稱</param> /// <param name="newValue">節點值</param> public void ModifyAppSetting(string key, string newValue) { var appSetting = (AppSettingsSection)_config.GetSection("appSettings"); if (appSetting.Settings[key] != null) //如果存在此節點,則修改 { appSetting.Settings[key].Value = newValue; } else //如果不存在此節點,則新增 { AddAppSetting(key, newValue); } } /// <summary> /// 新增資料庫連線字串節點,如果已經存在此節點,則會修改該節點的值 /// </summary> /// <param name="key">節點名稱</param> /// <param name="connectionString">節點值</param> public void AddConnectionString(string key, string connectionString) { var connectionSetting = (ConnectionStringsSection)_config.GetSection("connectionStrings"); if (connectionSetting.ConnectionStrings[key] == null) //如果不存在此節點,則新增 { var connectionStringSettings = new ConnectionStringSettings(key, connectionString); connectionSetting.ConnectionStrings.Add(connectionStringSettings); } else //如果存在此節點,則修改 { ModifyConnectionString(key, connectionString); } } /// <summary> /// 修改資料庫連線字串節點,如果不存在此節點,則會新增此節點及對應的值 /// </summary> /// <param name="key">節點名稱</param> /// <param name="connectionString">節點值</param> public void ModifyConnectionString(string key, string connectionString) { var connectionSetting = (ConnectionStringsSection)_config.GetSection("connectionStrings"); if (connectionSetting.ConnectionStrings[key] != null) //如果存在此節點,則修改 { connectionSetting.ConnectionStrings[key].ConnectionString = connectionString; } else //如果不存在此節點,則新增 { AddConnectionString(key, connectionString); } } /// <summary> /// 儲存所作的修改 /// </summary> public void Save() { _config.Save(); } } public enum ConfigType { /// <summary> /// asp.net網站的config檔案 /// </summary> WebConfig = 1, /// <summary> /// Windows應用程式的config檔案 /// </summary> ExeConfig = 2 } }