通過System.Configuration中的ConfigurationSettings類的AppSettings屬性,可以很方便訪問web.config配置文件中appSettings節(jié)點(diǎn)的數(shù)據(jù)。對(duì)于web程序利用這個(gè)配置文件存放一些只讀的程序信息,比如程序名稱,作者信息,數(shù)據(jù)庫連接字符串等將是十分方便有用。如:
<!--Sample.aspx--> private void Page_Load(object sender, System.EventArgs e) { this.tbName = ConfigurationSettings.AppSettings[“AppName“]; }
<!--web.config--> <configuration> <appSettings> <add key="AppName" value="MyApplication" /> </appSettings> ... ...
對(duì)于ConfigurationSettings類有個(gè)方法GetConfig(string sectionName)可以訪問任何配置元素,對(duì)于以上例子,可如此使用:
<!--Sample.aspx--> private void Page_Load(object sender, System.EventArgs e) { object settings = ConfigurationSettings.GetConfig(“appSettings“); NameValueCollection nvc = settings as NameValueCollection; if (nvc != null) { string val = (string)nvc[“AppName“]; this.tbName = val; } }
可見GetConfig()方法返回了一個(gè)配置處理的對(duì)象,轉(zhuǎn)換成NameValueCollection的實(shí)例后,可以訪問到該section內(nèi)的內(nèi)容了。其實(shí)對(duì)于配置文件檢索有背后的處理程序?qū)崿F(xiàn),同時(shí)我們可以看到在web.config,或machine.config中看到對(duì)于處理程序的聲明,如:
<!--web.config--> <configuration> <configSections> <section name="mySection" type="Chagel.Configration.Settings, Configuration" /> </configSections> <mySection> <AppName> MyApplication</AppName> </mySection> ... ...
以上聲明了一個(gè)mySection元素,并在configSections中聲明了該配置的處理程序類名為Chagel.Configration.Settings,Configuration為程序集名稱。接下來我們可以通過一個(gè)實(shí)現(xiàn)System.Configuration.IConfigurationSectionHandler接口的類來處理該配置元素,如:
<!--Settings.cs--> using Chagel.Configration.Data; namespace Chagel.Configration { public class Settings:IConfigurationSectionHandler { //實(shí)現(xiàn)該接口的Create方法 public object Create(object parent, object input, XmlNode node) { Data data = new Data();
foreach(XmlNode xn in node.ChildNodes) { switch(xn.Name) { case("appName"): data.AppName = xn.InnerText; break; case("appVer"): data.AppVer = xn.InnerText; break; ... ... }//switch end }//foreach end
return data;
}//method end } }
IConfigurationSectionHandler 接口只有一種方法,每當(dāng)發(fā)現(xiàn)注冊(cè)到處理程序的配置節(jié)時(shí),都會(huì)在節(jié)處理程序上調(diào)用 Create 方法,我們實(shí)現(xiàn)的類返回一個(gè)Data類的實(shí)例,該類是一個(gè)專門的數(shù)據(jù)集,代碼如下:
<!--Data.cs--> namespace Chagel.Configration.Data { public class Data { public Data() { } public string AppName;//程序名稱 public string AppVer;//程序版本 public string AppAuthor;//程序作者 ... ... } }
至此,現(xiàn)在可以讀取配置元素值了,如:
<!--Sample1.aspx--> private void Page_Load(object sender, System.EventArgs e) { Data data; data = ConfigurationSettings.GetConfig("mySection") as Data; this.tbName.Text = data.AppName; }
到此我們通過實(shí)現(xiàn)一個(gè)類支持 IConfigurationSectionHandler 接口來對(duì)自定義節(jié)進(jìn)行處理,完成對(duì)自定義節(jié)的讀取。當(dāng)然我們?nèi)钥梢灾苯勇暶飨到y(tǒng)的處理程序(System.Configuration.NameValueFileSectionHandler)重用與appSettings一樣的類。
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!