栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

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

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

如下所示:



 
  
  
  
  
 

对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;
    }

    /// 
    ///更新连接字符串 
    /// 
    ///连接字符串名称 
    ///连接字符串内容 
    ///数据提供程序名称 
    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");
    }

    /// 
    ///返回*.exe.config文件中appSettings配置节的value项 
    /// 
    /// 
    /// 
    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;
    }

    /// 
    ///在*.exe.config文件中appSettings配置节增加一对键值对 
    /// 
    /// 
    /// 
    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 = @"bd{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 = @"bd{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配置文件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/123890.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号