好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#读写config配置文件的方法

如下所示:

<?xml version= "1.0" encoding= "utf-8" ?>

<configuration>

  <appSettings>

   <add key= "ServerIP" value= "127.0.0.1" ></add>

   <add key= "DataBase" value= "WarehouseDB" ></add>

   <add key= "user" value= "sa" ></add>

   <add key= "password" value= "sa" ></add>

  </appSettings>

</configuration>

对config配置文件的读写类

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Text.RegularExpressions;

using System.Configuration;

using System.ServiceModel;

using System.ServiceModel.Configuration;

 

namespace NetUtilityLib

{

   public static class ConfigHelper

   {

     //依据连接串名字connectionName返回数据连接字符串

     public static string GetConnectionStringsConfig( string connectionName)

     {

       //指定config文件读取

       string file = System.Windows.Forms.Application.ExecutablePath;

       System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(file);

       string connectionString =

         config.ConnectionStrings.ConnectionStrings[connectionName].ConnectionString.ToString();

       return connectionString;

     }

 

     ///<summary>

     ///更新连接字符串

     ///</summary>

     ///<param name="newName">连接字符串名称</param>

     ///<param name="newConString">连接字符串内容</param>

     ///<param name="newProviderName">数据提供程序名称</param>

     public static void UpdateConnectionStringsConfig( string newName, string newConString, string newProviderName)

     {

       //指定config文件读取

       string file = System.Windows.Forms.Application.ExecutablePath;

       Configuration config = ConfigurationManager.OpenExeConfiguration(file);

 

       bool exist = false ; //记录该连接串是否已经存在

       //如果要更改的连接串已经存在

       if (config.ConnectionStrings.ConnectionStrings[newName] != null )

       {

         exist = true ;

       }

       // 如果连接串已存在,首先删除它

       if (exist)

       {

         config.ConnectionStrings.ConnectionStrings.Remove(newName);

       }

       //新建一个连接字符串实例

       ConnectionStringSettings mySettings =

         new ConnectionStringSettings(newName, newConString, newProviderName);

       // 将新的连接串添加到配置文件中.

       config.ConnectionStrings.ConnectionStrings.Add(mySettings);

       // 保存对配置文件所作的更改

       config.Save(ConfigurationSaveMode.Modified);

       // 强制重新载入配置文件的ConnectionStrings配置节

       ConfigurationManager.RefreshSection( "ConnectionStrings" );

     }

 

     ///<summary>

     ///返回*.exe.config文件中appSettings配置节的value项

     ///</summary>

     ///<param name="strKey"></param>

     ///<returns></returns>

     public static string GetAppConfig( string strKey)

     {

       string file = System.Windows.Forms.Application.ExecutablePath;

       Configuration config = ConfigurationManager.OpenExeConfiguration(file);

       foreach ( string key in config.AppSettings.Settings.AllKeys)

       {

         if (key == strKey)

         {

           return config.AppSettings.Settings[strKey].Value.ToString();

         }

       }

       return null ;

     }

 

     ///<summary>

     ///在*.exe.config文件中appSettings配置节增加一对键值对

     ///</summary>

     ///<param name="newKey"></param>

     ///<param name="newValue"></param>

     public static void UpdateAppConfig( string newKey, string newValue)

     {

       string file = System.Windows.Forms.Application.ExecutablePath;

       Configuration config = ConfigurationManager.OpenExeConfiguration(file);

       bool exist = false ;

       foreach ( string key in config.AppSettings.Settings.AllKeys)

       {

         if (key == newKey)

         {

           exist = true ;

         }

       }

       if (exist)

       {

         config.AppSettings.Settings.Remove(newKey);

       }

       config.AppSettings.Settings.Add(newKey, newValue);

       config.Save(ConfigurationSaveMode.Modified);

       ConfigurationManager.RefreshSection( "appSettings" );

     }

 

     // 修改system.serviceModel下所有服务终结点的IP地址

     public static void UpdateServiceModelConfig( string configPath, string serverIP)

     {

       Configuration config = ConfigurationManager.OpenExeConfiguration(configPath);

       ConfigurationSectionGroup sec = config.SectionGroups[ "system.serviceModel" ];

       ServiceModelSectionGroup serviceModelSectionGroup = sec as ServiceModelSectionGroup;

       ClientSection clientSection = serviceModelSectionGroup.Client;

       foreach (ChannelEndpointElement item in clientSection.Endpoints)

       {

         string pattern = @"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b" ;

         string address = item.Address.ToString();

         string replacement = string .Format( "{0}" , serverIP);

         address = Regex.Replace(address, pattern, replacement);

         item.Address = new Uri(address);

       }

 

       config.Save(ConfigurationSaveMode.Modified);

       ConfigurationManager.RefreshSection( "system.serviceModel" );

     }

 

     // 修改applicationSettings中App.Properties.Settings中服务的IP地址

     public static void UpdateConfig( string configPath, string serverIP)

     {

       Configuration config = ConfigurationManager.OpenExeConfiguration(configPath);

       ConfigurationSectionGroup sec = config.SectionGroups[ "applicationSettings" ];

       ConfigurationSection configSection = sec.Sections[ "DataService.Properties.Settings" ];

       ClientSettingsSection clientSettingsSection = configSection as ClientSettingsSection;

       if (clientSettingsSection != null )

       {

         SettingElement element1 = clientSettingsSection.Settings.Get( "DataService_SystemManagerWS_SystemManagerWS" );

         if (element1 != null )

         {

           clientSettingsSection.Settings.Remove(element1);

           string oldValue = element1.Value.ValueXml.InnerXml;

           element1.Value.ValueXml.InnerXml = GetNewIP(oldValue, serverIP);

           clientSettingsSection.Settings.Add(element1);

         }

 

         SettingElement element2 = clientSettingsSection.Settings.Get( "DataService_EquipManagerWS_EquipManagerWS" );

         if (element2 != null )

         {

           clientSettingsSection.Settings.Remove(element2);

           string oldValue = element2.Value.ValueXml.InnerXml;

           element2.Value.ValueXml.InnerXml = GetNewIP(oldValue, serverIP);

           clientSettingsSection.Settings.Add(element2);

         }

       }

       config.Save(ConfigurationSaveMode.Modified);

       ConfigurationManager.RefreshSection( "applicationSettings" );

     }

 

     private static string GetNewIP( string oldValue, string serverIP)

     {

       string pattern = @"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b" ;

       string replacement = string .Format( "{0}" , serverIP);

       string newvalue = Regex.Replace(oldValue, pattern, replacement);

       return newvalue;

     }

   }

}

测试代码如下:

class Program

   {

     static void Main( string [] args)

     {

       try

       {

         //string file = System.Windows.Forms.Application.ExecutablePath + ".config";

         //string file1 = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;

         string serverIP = ConfigHelper.GetAppConfig( "ServerIP" );

         string db = ConfigHelper.GetAppConfig( "DataBase" );

         string user = ConfigHelper.GetAppConfig( "user" );

         string password = ConfigHelper.GetAppConfig( "password" );

 

         Console.WriteLine(serverIP);

         Console.WriteLine(db);

         Console.WriteLine(user);

         Console.WriteLine(password);

 

         ConfigHelper.UpdateAppConfig( "ServerIP" , "192.168.1.11" );

         string newIP = ConfigHelper.GetAppConfig( "ServerIP" );

         Console.WriteLine(newIP);

 

         Console.ReadKey();

       }

       catch (Exception ex)

       {

         Console.WriteLine(ex.Message);

       }

     }

   }

以上这篇C#读写config配置文件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

dy("nrwz");

查看更多关于C#读写config配置文件的方法的详细内容...

  阅读:39次