激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C# - 詳解C#如何讀寫config配置文件

詳解C#如何讀寫config配置文件

2022-02-13 15:39阿凡盧 C#

這篇文章主要介紹了詳解C#如何讀寫config配置文件,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

配置文件概述:

應用程序配置文件是標準的 XML 文件,XML 標記和屬性是區分大小寫的。它是可以按需要更改的,開發人員可以使用配置文件來更改設置,而不必重編譯應用程序。配置文件的根節點是configuration。我們經常訪問的是appSettings,它是由.Net預定義的配置節。我們經常使用的配置文件的架構是客訴下面的形式。先大概有個印象,通過后面的實例會有一個比較清楚的認識。下面的“配置節”可以理解為進行配置一個XML的節點。

對于一個config文件:

?
1
2
3
4
5
6
7
8
9
<?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配置文件的讀寫類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
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;
  }
 }
}

測試代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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);
  }
 }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/luxiaoxun/p/3599341.html

延伸 · 閱讀

精彩推薦
  • C#C#實現XML文件讀取

    C#實現XML文件讀取

    這篇文章主要為大家詳細介紹了C#實現XML文件讀取的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Just_for_Myself6702022-02-22
  • C#WPF 自定義雷達圖開發實例教程

    WPF 自定義雷達圖開發實例教程

    這篇文章主要介紹了WPF 自定義雷達圖開發實例教程,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下...

    WinterFish13112021-12-06
  • C#深入解析C#中的交錯數組與隱式類型的數組

    深入解析C#中的交錯數組與隱式類型的數組

    這篇文章主要介紹了深入解析C#中的交錯數組與隱式類型的數組,隱式類型的數組通常與匿名類型以及對象初始值設定項和集合初始值設定項一起使用,需要的...

    C#教程網6172021-11-09
  • C#C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    這篇文章主要介紹了C# 實現對PPT文檔加密、解密及重置密碼的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下...

    E-iceblue5012022-02-12
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

    C#裁剪,縮放,清晰度,水印處理操作示例

    這篇文章主要為大家詳細介紹了C#裁剪,縮放,清晰度,水印處理操作示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    吳 劍8332021-12-08
  • C#C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    這篇文章主要介紹了C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結合具體實例形式分析了C#使用訪問者模式解決長...

    GhostRider9502022-01-21
  • C#C#通過KD樹進行距離最近點的查找

    C#通過KD樹進行距離最近點的查找

    這篇文章主要為大家詳細介紹了C#通過KD樹進行距離最近點的查找,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    帆帆帆6112022-01-22
  • C#Unity3D實現虛擬按鈕控制人物移動效果

    Unity3D實現虛擬按鈕控制人物移動效果

    這篇文章主要為大家詳細介紹了Unity3D實現虛擬按鈕控制人物移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    shenqingyu060520232410972022-03-11
主站蜘蛛池模板: 亚洲欧美日韩精品久久亚洲区色播 | 精品久久久久久久久久久久久久 | 久久超 | 一级黄色大片在线观看 | 欧美成人免费一级 | 久久久一区二区三区四区 | 久久久精品网 | 国产大片在线观看 | 国产一区二区视频精品 | 久久亚洲网 | 久久国产不卡 | 国产精品一区二区三区在线看 | 亚洲第一男人天堂 | 蜜桃传媒视频麻豆第一区免费观看 | 少妇的肉体2无删减版 | 蜜桃精品视频 | 中文字幕www| 国产美女爽到喷白浆的 | 精品久久久久久综合日本 | 天天操天天操天天操天天操天天操天天操 | teensexhd| 国产精品岛国久久久久久 | 一区二区三视频 | 激情毛片| 一级片免费在线播放 | 国产三级在线观看a | 精品国产乱码久久久久久久 | 成人免费福利视频 | 国产成人强伦免费视频网站 | 日本综合久久 | 成人午夜免费在线视频 | 国产精品久久久久久久久粉嫩 | 欧美性受xxx黑人xyx性爽 | 韩国精品一区二区三区四区五区 | 国产成人精品午夜视频' | 黄色二区三区 | 91免费影视 | 国内一区 | 欧美日韩精品不卡一区二区三区 | 久久精品中文字幕一区 | 中国美女一级黄色片 |