WEB 下設定檔的讀寫跟 用戶端應用程式設定檔 下 對設定檔的讀寫,幾乎完全是一樣的。只不過 , web.config 有多重繼承的問題。
子網站目錄下如果沒配置,會繼承自上級目錄。依次類推,這是一個多層繼承的問題。
同樣是上篇 Blog 的配置類 ,我們下面來看看 Web 下的讀寫操作
using System.Web.Configuration;
寫操作:
卸載掉原來節,新增節來寫操作
ConfigDataClass configData = new ConfigDataClass();
configData.ID = 100;
configData.Name = "我是誰?";
Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
config.Sections.Remove("SettingsData");
config.Sections.Add("SettingsData", configData);
config.Save();
在原來節基礎上的修改操作
Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
ConfigDataClass configData = config.GetSection("SettingsData") as ConfigDataClass;
configData.ID = 1003;
configData.Name = "我";
config.Save();
讀操作:
ConfigDataClass configData = ConfigurationManager.GetSection("SettingsData") as ConfigDataClass;
if (configData == null) return string.Empty;
return configData.ToString();
從上面我們可以看到
除了
Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
這一行代碼 和 引用的 名稱空間 using System.Web.Configuration; 不同外,Web 程式跟 用戶端應用程式完全是一樣的代碼。
不論是 Web 程式,還是 用戶端應用程式,有時候,一個設定檔是不夠的,我們可能需要多個設定檔,下面我們就看看如何對其他設定檔當系統預設的設定檔來讀寫。
注意,我們這時候用的是 System.Configuration.Configuration 類,不論 Web 程式,還是 用戶端應用程式 都可以用這個類。
更新指定的另外設定檔
ConfigurationFileMap fileMap = new ConfigurationFileMap();
fileMap.MachineConfigFilename = @"D:\My2005Codes\WebTestCode\TestWEBSite\aa.config";
System.Configuration.Configuration config = ConfigurationManager.OpenMappedMachineConfiguration(fileMap);
ConfigDataClass configData = new ConfigDataClass();
configData.ID = 303;
configData.Name = "CSDN?";
config.Sections.Remove("SettingsData");
config.Sections.Add("SettingsData", configData);
config.Save();
在寫操作之前,這個設定檔可以沒有上述配置節,但是必須有下面幾行資訊,否則就會報沒有根節點。
<?xml version="1.0"?>
<configuration>
</configuration>
完成寫操作後,這個 aa.config 檔案就變成了
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="SettingsData" type="ConfigDataClass, App_Code.yltp08ba, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" />
</configSections>
<SettingsData id="303" name="CSDN?" />
</configuration>
讀取指定的另外設定檔
ConfigurationFileMap fileMap = new ConfigurationFileMap();
fileMap.MachineConfigFilename = @"D:\My2005Codes\WebTestCode\TestWEBSite\aa.config";
System.Configuration.Configuration config = ConfigurationManager.OpenMappedMachineConfiguration(fileMap);
ConfigDataClass configData = config.GetSection("SettingsData") as ConfigDataClass;
if (configData == null) return string.Empty;
return configData.ToString();
如果是 用戶端應用程式,你還可以 通過使用 System.Configuration.ConfigurationManager.OpenMappedExeConfiguration 讀寫多個用戶端應用程式預設設定檔。
當然這些功能完全可以用類的序列化,還原序列化來用,但是既然有這個功能,幹麼不用呢?