1.首先是Web.Config配置文件詳解的參數含義(具體內容都在以下代碼中有注釋-我從網上找到的)

1 public class ConfigData : ConfigurationSection 2 { 3 [ConfigurationProperty("ID")] 4 public string ID 5 { 6 get { return (string)this["ID"];} 7 set {this["ID"]=value;} 8 } 9 [ConfigurationProperty("Value")] 10 public string Value 11 { 12 get { return (string)this["Value"]; } 13 set { this["Value"] = value; } 14 } 15 }
<!--appSettings是應用程序設置,可以定義應用程序的全局常量設置等信息-->
<appSettings>
<add key="DataSource" value="(local)" />
<add key="InitialCatalog" value="TEST" />
<add key="UserID" value="sa" />
<add key="Password" value="sa" />
</appSettings>
<!--連接字符串設置-->
<connectionStrings>
<add name="ConnString" connectionString="Data Source=GAO;Initial Catalog=HBWXDate;Us
er ID=sa;password=sa"></add>
<add name="111" connectionString="11111" />
</connectionStrings>
引用:
string DataSoruce = ConfigurationManager.AppSettings["DataSource"].ToString();
string InitialCatalog = ConfigurationManager.AppSettings["InitialCatalog"].ToString();
string UserID = ConfigurationManager.AppSettings["UserID"].ToString();
string Password = ConfigurationManager.AppSettings["Password"].ToString();
2.配置數據讀寫操作
2.1 繼承自ConfigurationSection的子類
只有繼承自ConfigurationSection的對象才能進行配置數據讀寫操作,ConfigurationSection提供了索引器用來獲取和設置配置數據,需要注意的是擁有ConfigurationProperty特性的屬性才會被存儲,並且名稱要保持大小寫完全一致。

1 public class Config : ConfigurationSection 2 { 3 [ConfigurationProperty("DataSource")] 4 public string DataSource 5 { 6 get {return (string)this["DataSource"];} 7 set { this["DataSource"] = value; } 8 } 9 [ConfigurationProperty("InitialCatalog")] 10 public string DataSource 11 { 12 get { return (string)this["InitialCatalog"]; } 13 set { this["InitialCatalog"] = value; } 14 } 15 [ConfigurationProperty("UserID")] 16 public string DataSource 17 { 18 get { return (string)this["UserID"]; } 19 set { this["UserID"] = value; } 20 } 21 [ConfigurationProperty("Password")] 22 public string DataSource 23 { 24 get { return (string)this["Password"]; } 25 set { this["Password"] = value; } 26 } 27 }
實例化Config類后,就可以通過該類的屬性對配置文件進行讀寫操作了。
2.2 創建配置文件操作對象
1 Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 2 Config data = new Config();//... 3 config.Sections.Add("add", data);//在根節點(configuration)下寫入名稱為"add"的配置數據。 4 config.Save(ConfigurationSaveMode.Minimal);
如果我們需要操作非缺省配置文件,可以使用ExeConfigurationFileMap對象。(缺省配置文件:指系統默認的配置文件)
添加
1 ExeConfigurationFileMap file = new ExeConfigurationFileMap(); 2 file.ExeConfigFilename = "test.config"; 3 Configuration conf = ConfigurationManager.OpenMappedExeConfiguration(file, ConfigurationUserLevel.None); 4 Config data = new Config(); 5 data.DataSource = "(local)"; 6 data.InitiakCatalog= "DB"; 7 conf.Sections.Add("sql", data); 8 conf.Save(ConfigurationSaveMode.Minimal); 9 //如果我們不希望在根節點下寫入配置數據,可以使用ConfigurationSectionGroup對象。 10 11 ExeConfigurationFileMap file = new ExeConfigurationFileMap(); 12 file.ExeConfigFilename = "test.config"; 13 Configuration conf = ConfigurationManager.OpenMappedExeConfiguration(file, ConfigurationUserLevel.None); 14 Config data = new Config(); 15 data.DataSource= "1000"; 16 data.UserID = "sa"; 17 conf.SectionGroups.Add("group1", new ConfigurationSectionGroup()); 18 conf.SectionGroups["group1"].Sections.Add("add", data); 19 conf.Save(ConfigurationSaveMode.Minimal);
讀取
1 ExeConfigurationFileMap file = new ExeConfigurationFileMap(); 2 file.ExeConfigFilename = "test.config"; 3 Configuration conf = ConfigurationManager.OpenMappedExeConfiguration(file, ConfigurationUserLevel.None); 4 5 Config data = conf.SectionGroups["group1"].Sections["add"] as Config; 6 //Config data = conf.Sections["add"] as Config; // 從根節讀取 7 8 if (data != null) 9 { 10 //...
11 }
寫入
(在寫入 ConfigurationSectionGroup 和 ConfigurationSection 前要判斷同名配置是否已經存在,否則會寫入失敗。
另外如果配置文件被其他Configuration對象修改,則保存會失敗,並拋出異常。建議采用Singleton模式。)

1 ExeConfigurationFileMap file = new ExeConfigurationFileMap(); 2 file.ExeConfigFilename = "test.config"; 3 Configuration config = ConfigurationManager.OpenMappedExeConfiguration(file, ConfigurationUserLevel.None); 4 5 ConfigSectionData data = new ConfigSectionData(); 6 data.Id = 2000; 7 data.Time = DateTime.Now; 8 9 ConfigurationSectionGroup group1 = config.SectionGroups["group1"]; 10 if (group1 == null) 11 config.SectionGroups.Add("group1", new ConfigurationSectionGroup()); 12 13 ConfigurationSection data = group1.Sections["add"] as config; 14 if (add == null) 15 config.SectionGroups["group1"].Sections.Add("add", data); 16 else 17 { 18 group1.Sections.Remove("add"); 19 group1.Sections.Add("add", data); 20 21 // 或者直接修改原配置對象,前提是類型轉換要成功。 22 //ConfigSectionData configData = add as ConfigSectionData; 23 //configData.Id = data.Id; 24 //configData.Time = data.Time; 25 } 26 27 config.Save(ConfigurationSaveMode.Minimal);
刪除

1 config.SectionGroups.Remove("group1"); 2 //config.SectionGroups.Clear(); 3 4 config.Save(ConfigurationSaveMode.Minimal); 5 6 刪除ConfigurationSection 7 config.Sections.Remove("add1"); 8 //config.Sections.Clear(); 9 10 if (config.SectionGroups["group1"] != null) 11 { 12 config.SectionGroups["group1"].Sections.Remove("add2"); 13 //config.SectionGroups["group1"].Sections.Clear(); 14 } 15 16 config.Save(ConfigurationSaveMode.Minimal);
其他
可以使用 ConfigurationManager.OpenMachineConfiguration() 來操作 Machine.config 文件。或使用 System.Web.Configuration 名字空間中的 WebConfigurationManager 類來操作 ASP.net 配置文件。ConfigurationManager還提供了AppSettings、ConnectionStrings、GetSection()等便捷操作。
。。。。。。。。