配置文件——WebApp.config文件读取和修改

Posted 張暁磊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置文件——WebApp.config文件读取和修改相关的知识,希望对你有一定的参考价值。

 

[csharp] view plain copy
 
 技术分享技术分享
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Configuration;  
  4. using System.Linq;  
  5. using System.Net.Mime;  
  6. using System.Text;  
  7. using System.Threading.Tasks;  
  8. using System.Web;  
  9. using System.Xml;  
  10.   
  11. namespace Infrastructure  
  12. {  
  13.     public class WebConfigHelper  
  14.     {  
  15.         private Configuration _config;  
  16.         private readonly string _configPath;  
  17.         private readonly ConfigType _configType;  
  18.   
  19.         /// <summary>  
  20.         /// 对应的配置文件  
  21.         /// </summary>  
  22.         public Configuration Configuration  
  23.         {  
  24.             get { return _config; }  
  25.             set { _config = value; }  
  26.         }  
  27.   
  28.         /// <summary>  
  29.         /// 构造函数  
  30.         /// </summary>  
  31.         public WebConfigHelper()  
  32.         {  
  33.             _configPath = HttpContext.Current.Request.ApplicationPath;  
  34.             Initialize();  
  35.         }  
  36.   
  37.         /// <summary>  
  38.         /// 构造函数  
  39.         /// </summary>  
  40.         /// <param name="configPath">.config文件的位置</param>  
  41.         /// <param name="configType">.config文件的类型,只能是网站配置文件或者应用程序配置文件</param>  
  42.         public WebConfigHelper(string configPath, ConfigType configType)  
  43.         {  
  44.             this._configPath = configPath;  
  45.             this._configType = configType;  
  46.             Initialize();  
  47.         }  
  48.   
  49.         //实例化configuration,根据配置文件类型的不同,分别采取了不同的实例化方法  
  50.         private void Initialize()  
  51.         {  
  52.             //如果是WinForm应用程序的配置文件  
  53.               
  54.             if (_configType == ConfigType.ExeConfig)  
  55.             {  
  56.                 _config = ConfigurationManager.OpenExeConfiguration(_configPath);  
  57.             }  
  58.             else //WebForm的配置文件  
  59.             {  
  60.                 _config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(_configPath);  
  61.             }  
  62.         }  
  63.   
  64.         public string GetValueByKey(string key)  
  65.         {  
  66.             return ConfigurationManager.AppSettings[key];  
  67.         }  
  68.   
  69.         /// <summary>  
  70.         /// 添加应用程序配置节点,如果已经存在此节点,则会修改该节点的值  
  71.         /// </summary>  
  72.         /// <param name="key">节点名称</param>  
  73.         /// <param name="value">节点值</param>  
  74.         public void AddAppSetting(string key, string value)  
  75.         {  
  76.             var appSetting = (AppSettingsSection)_config.GetSection("appSettings");  
  77.             if (appSetting.Settings[key] == null) //如果不存在此节点,则添加  
  78.             {  
  79.                 appSetting.Settings.Add(key, value);  
  80.             }  
  81.             else //如果存在此节点,则修改  
  82.             {  
  83.                 ModifyAppSetting(key, value);  
  84.             }  
  85.         }  
  86.   
  87.         /// <summary>  
  88.         /// 修改应用程序配置节点,如果不存在此节点,则会添加此节点及对应的值  
  89.         /// </summary>  
  90.         /// <param name="key">节点名称</param>  
  91.         /// <param name="newValue">节点值</param>  
  92.         public void ModifyAppSetting(string key, string newValue)  
  93.         {  
  94.             var appSetting = (AppSettingsSection)_config.GetSection("appSettings");  
  95.             if (appSetting.Settings[key] != null) //如果存在此节点,则修改  
  96.             {  
  97.                 appSetting.Settings[key].Value = newValue;  
  98.             }  
  99.             else //如果不存在此节点,则添加  
  100.             {  
  101.                 AddAppSetting(key, newValue);  
  102.             }  
  103.         }  
  104.   
  105.         /// <summary>  
  106.         /// 添加数据库连接字符串节点,如果已经存在此节点,则会修改该节点的值  
  107.         /// </summary>  
  108.         /// <param name="key">节点名称</param>  
  109.         /// <param name="connectionString">节点值</param>  
  110.         public void AddConnectionString(string key, string connectionString)  
  111.         {  
  112.             var connectionSetting = (ConnectionStringsSection)_config.GetSection("connectionStrings");  
  113.             if (connectionSetting.ConnectionStrings[key] == null) //如果不存在此节点,则添加  
  114.             {  
  115.                 var connectionStringSettings = new ConnectionStringSettings(key, connectionString);  
  116.                 connectionSetting.ConnectionStrings.Add(connectionStringSettings);  
  117.             }  
  118.             else //如果存在此节点,则修改  
  119.             {  
  120.                 ModifyConnectionString(key, connectionString);  
  121.             }  
  122.         }  
  123.   
  124.         /// <summary>  
  125.         /// 修改数据库连接字符串节点,如果不存在此节点,则会添加此节点及对应的值  
  126.         /// </summary>  
  127.         /// <param name="key">节点名称</param>  
  128.         /// <param name="connectionString">节点值</param>  
  129.         public void ModifyConnectionString(string key, string connectionString)  
  130.         {  
  131.             var connectionSetting = (ConnectionStringsSection)_config.GetSection("connectionStrings");  
  132.             if (connectionSetting.ConnectionStrings[key] != null) //如果存在此节点,则修改  
  133.             {  
  134.                 connectionSetting.ConnectionStrings[key].ConnectionString = connectionString;  
  135.             }  
  136.             else //如果不存在此节点,则添加  
  137.             {  
  138.                 AddConnectionString(key, connectionString);  
  139.             }  
  140.         }  
  141.   
  142.         /// <summary>  
  143.         /// 保存所作的修改  
  144.         /// </summary>  
  145.         public void Save()  
  146.         {  
  147.             _config.Save();  
  148.         }  
  149.     }  
  150.     public enum ConfigType  
  151.     {  
  152.         /// <summary>  
  153.         /// asp.net网站的config文件  
  154.         /// </summary>  
  155.         WebConfig = 1,  
  156.         /// <summary>  
  157.         /// Windows应用程序的config文件  
  158.         /// </summary>  
  159.         ExeConfig = 2  
  160.     }  
  161. }  
 
 

以上是关于配置文件——WebApp.config文件读取和修改的主要内容,如果未能解决你的问题,请参考以下文章

python读取ini配置文件+Scala读取配置文件

JAVA零配置读取配置文件

nacos 读取配置文件占位符读取不出来

家庭版.net无法读取配置文件

java 读取配置文件路径问题

springboot配置文件读取