ASP.NET配置文件中自定義節(jié)點(diǎn)
節(jié)處理程序解釋并處理 Web.config 文件特定部分中 XML 配置元素中定義的設(shè)置,并根據(jù)配置設(shè)置返回適當(dāng)?shù)呐渲脤?duì)象。
處理程序類返回的配置對(duì)象可以是任何數(shù)據(jù)結(jié)構(gòu);它不限于任何基配置類或配置格式。
ASP.NET 使用該配置對(duì)象,以對(duì)自定義配置元素進(jìn)行讀取和寫入。
1、創(chuàng)建自定義配置節(jié)處理程序
創(chuàng)建一個(gè)繼承 System.Configuration.ConfigurationSection 類的公共類
public class MyHandler : ConfigurationSection { public MyHandler() { } public MyHandler(String attribVal) { MyAttrib1 = attribVal; } [ConfigurationProperty("myAttrib1", DefaultValue = "Clowns", IsRequired = true)] [StringValidator(InvalidCharacters = "~!@#$%^&*()[]{}/;'\"|\\", MinLength = 1, MaxLength = 60)] public String MyAttrib1 { get { return (String)this["myAttrib1"]; } set { this["myAttrib1"] = value; } } [ConfigurationProperty("myChildSection")] public MyChildConfigElement MyChildSection { get { return (MyChildConfigElement)this["myChildSection"]; } set { this["myChildSection"] = value; } } } public class MyChildConfigElement : ConfigurationElement { public MyChildConfigElement() { } public MyChildConfigElement(String a1, String a2) { MyChildAttribute1 = a1; MyChildAttribute2 = a2; } [ConfigurationProperty("myChildAttrib1", DefaultValue = "Zippy", IsRequired = true)] [StringValidator(InvalidCharacters = "~!@#$%^&*()[]{}/;'\"|\\", MinLength = 1, MaxLength = 60)] public String MyChildAttribute1 { get { return (String)this["myChildAttrib1"]; } set { this["myChildAttrib1"] = value; } } [ConfigurationProperty("myChildAttrib2", DefaultValue = "Michael Zawondy", IsRequired = true)] [StringValidator(InvalidCharacters = "~!@#$%^&*()[]{}/;'\"|\\", MinLength = 1, MaxLength = 60)] public String MyChildAttribute2 { get { return (String)this["myChildAttrib2"]; } set { this["myChildAttrib2"] = value; } } }
2、向 ASP.NET 配置文件添加自定義節(jié)處理程序
<configuration> <configSections> <sectionGroup name="myCustomGroup"> <section name="myCustomSection" type="MyConfigSectionHandler.MyHandler, MyCustomConfigurationHandler, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" allowLocation="true" allowDefinition="Everywhere" /> </sectionGroup> </configSections> <myCustomGroup> <myCustomSection myAttrib1="Clowns"> <myChildSection myChildAttrib1="Zippy" myChildAttrib2="Michael Zawondy "/> </myCustomSection> </myCustomGroup> </configuration>
3、以編程方式訪問(wèn)自定義配置數(shù)據(jù)
獲取自定義配置對(duì)象的一個(gè)實(shí)例,并使用 GetSection 方法或 GetSection 方法來(lái)填充該實(shí)例。
下面的 ASPX 頁(yè)的示例使用前一個(gè)示例,以枚舉自定義配置節(jié)的屬性和子元素。
<%@ Page Language="C#" %> <script runat="server"> protected void Button1_Click(object sender, EventArgs e) { MyConfigSectionHandler.MyHandler config = (MyConfigSectionHandler.MyHandler)System.Configuration.ConfigurationManager.GetSection( "myCustomGroup/myCustomSection"); StringBuilder sb = new StringBuilder(); sb.Append("<h2>Attributes in the myCustomSection Element:</h2>"); sb.AppendFormat("myAttrib1 = {0}<br/>", config.MyAttrib1.ToString()); sb.Append("<h2>Attributes in the myChildSection Element:</h2>"); sb.AppendFormat("myChildAttrib1 = {0}<br/>", config.MyChildSection.MyChildAttribute1.ToString()); sb.AppendFormat("myChildAttrib2 = {0}<br/>", config.MyChildSection.MyChildAttribute2.ToString()); Label1.Text = sb.ToString(); Label1.Visible = true; } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <h1>Enumerate MyCustomSection</h1> <asp:Label ID="Label1" runat="server" Text="" /> <br /> <asp:Button ID="Button1" runat="server" Text="Get Custom Config Info" OnClick="Button1_Click" /> </div> </form> </body> </html>
到此這篇關(guān)于ASP.NET配置文件中自定義節(jié)點(diǎn)的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在 .NET Framework 2.0 中未處理的異常導(dǎo)致基于 ASP.NET 的應(yīng)用程序意外退出
如果在 Microsoft .NET Framework 2.0 上構(gòu)建的基于 Microsoft ASP.NET 的應(yīng)用程序中引發(fā)未處理的異常,該應(yīng)用程序?qū)?huì)意外退出。如果出現(xiàn)這個(gè)問(wèn)題,不會(huì)在應(yīng)用程序日志中記錄了解此問(wèn)題所必需的異常信息。2009-11-11ASP.NET Core Web App應(yīng)用第三方Bootstrap模板的方法教程
這篇文章主要給大家介紹了關(guān)于ASP.NET Core Web App應(yīng)用第三方Bootstrap模板的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起看看吧2018-06-06ASP.NET Core應(yīng)用錯(cuò)誤處理之三種呈現(xiàn)錯(cuò)誤頁(yè)面的方式
這篇文章主要給大家介紹了關(guān)于ASP.NET Core應(yīng)用錯(cuò)誤處理之三種呈現(xiàn)錯(cuò)誤頁(yè)面的方式的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01asp.net 2個(gè)日期之間的整月數(shù)的算法
我是說(shuō)兩個(gè)日期之間間隔整月,比如2008-11-5 和 2009-4-3之間的整月,結(jié)果是12,1,2,3這四個(gè)月2009-06-06.Net Core中自定義認(rèn)證實(shí)現(xiàn)
本文主要介紹了.Net Core中自定義認(rèn)證實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01.NET 日志系統(tǒng)設(shè)計(jì)思路及實(shí)現(xiàn)代碼
這篇文章主要介紹了.NET 日志系統(tǒng)設(shè)計(jì)思路及實(shí)現(xiàn)代碼,有需要的朋友可以參考一下2013-12-12充分利用ASP.NET的三種緩存提高站點(diǎn)性能的注意方法
充分利用ASP.NET的三種緩存提高站點(diǎn)性能的注意方法...2007-09-09.NET Core使用EF生成數(shù)據(jù)庫(kù)出錯(cuò)的解決方法
這篇文章介紹了.NET Core使用EF生成數(shù)據(jù)庫(kù)出錯(cuò)的解決方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-01-01