C#读写config配置文件

对config配置文件的读写类:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Text.RegularExpressions;  
  6. using System.Configuration;  
  7. using System.ServiceModel;  
  8. using System.ServiceModel.Configuration;  
  9.   
  10. namespace NetUtilityLib  
  11. {  
  12.     public static class ConfigHelper  
  13.     {  
  14.         //依据连接串名字connectionName返回数据连接字符串    
  15.         public static string GetConnectionStringsConfig(string connectionName)  
  16.         {  
  17.             //指定config文件读取  
  18.             string file = System.Windows.Forms.Application.ExecutablePath;  
  19.             System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(file);  
  20.             string connectionString =  
  21.                 config.ConnectionStrings.ConnectionStrings[connectionName].ConnectionString.ToString();  
  22.             return connectionString;  
  23.         }  
  24.   
  25.         ///<summary>   
  26.         ///更新连接字符串    
  27.         ///</summary>   
  28.         ///<param name="newName">连接字符串名称</param>   
  29.         ///<param name="newConString">连接字符串内容</param>   
  30.         ///<param name="newProviderName">数据提供程序名称</param>   
  31.         public static void UpdateConnectionStringsConfig(string newName, string newConString, string newProviderName)  
  32.         {  
  33.             //指定config文件读取  
  34.             string file = System.Windows.Forms.Application.ExecutablePath;  
  35.             Configuration config = ConfigurationManager.OpenExeConfiguration(file);  
  36.   
  37.             bool exist = false//记录该连接串是否已经存在    
  38.             //如果要更改的连接串已经存在    
  39.             if (config.ConnectionStrings.ConnectionStrings[newName] != null)  
  40.             {  
  41.                 exist = true;  
  42.             }  
  43.             // 如果连接串已存在,首先删除它    
  44.             if (exist)  
  45.             {  
  46.                 config.ConnectionStrings.ConnectionStrings.Remove(newName);  
  47.             }  
  48.             //新建一个连接字符串实例    
  49.             ConnectionStringSettings mySettings =  
  50.                 new ConnectionStringSettings(newName, newConString, newProviderName);  
  51.             // 将新的连接串添加到配置文件中.    
  52.             config.ConnectionStrings.ConnectionStrings.Add(mySettings);  
  53.             // 保存对配置文件所作的更改    
  54.             config.Save(ConfigurationSaveMode.Modified);  
  55.             // 强制重新载入配置文件的ConnectionStrings配置节    
  56.             ConfigurationManager.RefreshSection("ConnectionStrings");  
  57.         }  
  58.   
  59.         ///<summary>   
  60.         ///返回*.exe.config文件中appSettings配置节的value项    
  61.         ///</summary>   
  62.         ///<param name="strKey"></param>   
  63.         ///<returns></returns>   
  64.         public static string GetAppConfig(string strKey)  
  65.         {  
  66.             string file = System.Windows.Forms.Application.ExecutablePath;  
  67.             Configuration config = ConfigurationManager.OpenExeConfiguration(file);  
  68.             foreach (string key in config.AppSettings.Settings.AllKeys)  
  69.             {  
  70.                 if (key == strKey)  
  71.                 {  
  72.                     return config.AppSettings.Settings[strKey].Value.ToString();  
  73.                 }  
  74.             }  
  75.             return null;  
  76.         }  
  77.   
  78.         ///<summary>    
  79.         ///在*.exe.config文件中appSettings配置节增加一对键值对    
  80.         ///</summary>    
  81.         ///<param name="newKey"></param>    
  82.         ///<param name="newValue"></param>    
  83.         public static void UpdateAppConfig(string newKey, string newValue)  
  84.         {  
  85.             string file = System.Windows.Forms.Application.ExecutablePath;  
  86.             Configuration config = ConfigurationManager.OpenExeConfiguration(file);  
  87.             bool exist = false;  
  88.             foreach (string key in config.AppSettings.Settings.AllKeys)  
  89.             {  
  90.                 if (key == newKey)  
  91.                 {  
  92.                     exist = true;  
  93.                 }  
  94.             }  
  95.             if (exist)  
  96.             {  
  97.                 config.AppSettings.Settings.Remove(newKey);  
  98.             }  
  99.             config.AppSettings.Settings.Add(newKey, newValue);  
  100.             config.Save(ConfigurationSaveMode.Modified);  
  101.             ConfigurationManager.RefreshSection("appSettings");  
  102.         }  
  103.   
  104.         // 修改system.serviceModel下所有服务终结点的IP地址  
  105.         public static void UpdateServiceModelConfig(string configPath, string serverIP)  
  106.         {  
  107.             Configuration config = ConfigurationManager.OpenExeConfiguration(configPath);  
  108.             ConfigurationSectionGroup sec = config.SectionGroups["system.serviceModel"];  
  109.             ServiceModelSectionGroup serviceModelSectionGroup = sec as ServiceModelSectionGroup;  
  110.             ClientSection clientSection = serviceModelSectionGroup.Client;  
  111.             foreach (ChannelEndpointElement item in clientSection.Endpoints)  
  112.             {  
  113.                 string pattern = @"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b";  
  114.                 string address = item.Address.ToString();  
  115.                 string replacement = string.Format("{0}", serverIP);  
  116.                 address = Regex.Replace(address, pattern, replacement);  
  117.                 item.Address = new Uri(address);  
  118.             }  
  119.   
  120.             config.Save(ConfigurationSaveMode.Modified);  
  121.             ConfigurationManager.RefreshSection("system.serviceModel");  
  122.         }  
  123.   
  124.         // 修改applicationSettings中App.Properties.Settings中服务的IP地址  
  125.         public static void UpdateConfig(string configPath, string serverIP)  
  126.         {  
  127.             Configuration config = ConfigurationManager.OpenExeConfiguration(configPath);  
  128.             ConfigurationSectionGroup sec = config.SectionGroups["applicationSettings"];  
  129.             ConfigurationSection configSection = sec.Sections["DataService.Properties.Settings"];  
  130.             ClientSettingsSection clientSettingsSection = configSection as ClientSettingsSection;  
  131.             if (clientSettingsSection != null)  
  132.             {  
  133.                 SettingElement element1 = clientSettingsSection.Settings.Get("DataService_SystemManagerWS_SystemManagerWS");  
  134.                 if (element1 != null)  
  135.                 {  
  136.                     clientSettingsSection.Settings.Remove(element1);  
  137.                     string oldValue = element1.Value.ValueXml.InnerXml;  
  138.                     element1.Value.ValueXml.InnerXml = GetNewIP(oldValue, serverIP);  
  139.                     clientSettingsSection.Settings.Add(element1);  
  140.                 }  
  141.   
  142.                 SettingElement element2 = clientSettingsSection.Settings.Get("DataService_EquipManagerWS_EquipManagerWS");  
  143.                 if (element2 != null)  
  144.                 {  
  145.                     clientSettingsSection.Settings.Remove(element2);  
  146.                     string oldValue = element2.Value.ValueXml.InnerXml;  
  147.                     element2.Value.ValueXml.InnerXml = GetNewIP(oldValue, serverIP);  
  148.                     clientSettingsSection.Settings.Add(element2);  
  149.                 }  
  150.             }  
  151.             config.Save(ConfigurationSaveMode.Modified);  
  152.             ConfigurationManager.RefreshSection("applicationSettings");  
  153.         }  
  154.   
  155.         private static string GetNewIP(string oldValue, string serverIP)  
  156.         {  
  157.             string pattern = @"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b";  
  158.             string replacement = string.Format("{0}", serverIP);  
  159.             string newvalue = Regex.Replace(oldValue, pattern, replacement);  
  160.             return newvalue;  
  161.         }  
  162.     }  

测试代码如下:

  1. class Program  
  2.     {  
  3.         static void Main(string[] args)  
  4.         {  
  5.             try  
  6.             {  
  7.                 //string file = System.Windows.Forms.Application.ExecutablePath + ".config";  
  8.                 //string file1 = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;  
  9.                 string serverIP = ConfigHelper.GetAppConfig("ServerIP");  
  10.                 string db = ConfigHelper.GetAppConfig("DataBase");  
  11.                 string user = ConfigHelper.GetAppConfig("user");  
  12.                 string password = ConfigHelper.GetAppConfig("password");  
  13.   
  14.                 Console.WriteLine(serverIP);  
  15.                 Console.WriteLine(db);  
  16.                 Console.WriteLine(user);  
  17.                 Console.WriteLine(password);  
  18.   
  19.                 ConfigHelper.UpdateAppConfig("ServerIP""192.168.1.11");  
  20.                 string newIP = ConfigHelper.GetAppConfig("ServerIP");  
  21.                 Console.WriteLine(newIP);  
  22.   
  23.                 Console.ReadKey();  
  24.             }  
  25.             catch (Exception ex)  
  26.             {  
  27.                 Console.WriteLine(ex.Message);  
  28.             }  
  29.         }  
  30.     }  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值