[ASP.NET]撰寫自己的 Configuration 區段 Part 1:不要再賴在 appSettings 的屋簷下了,寫個自己的 Configuration 區段吧~

我想,很多寫 ASP.NET 應用程式的人,都會習慣性的把自己的一些設定值放到 Web.config 中的 appSettings 區域中,然後用 ConfigurationSettings.AppSettings (1.1) 或 ConfigurationManager.AppSettings (2.0+) 來取設定值吧,雖然它是很好用沒錯,但是如果設定一多的話,appSettings 區塊會充斥一大堆的設定值,屆時要分也不太好分(一堆不同模組的設定都混在同一區了),因此,若想要寫中大型 ASP.NET 應用程式的人,可能不得不學一下如何設計自己的 Configuration 區段了。

我想,很多寫 ASP.NET 應用程式的人,都會習慣性的把自己的一些設定值放到 Web.config 中的 appSettings 區域中,然後用 ConfigurationSettings.AppSettings (1.1) 或 ConfigurationManager.AppSettings (2.0+) 來取設定值吧,雖然它是很好用沒錯,但是如果設定一多的話,appSettings 區塊會充斥一大堆的設定值,屆時要分也不太好分(一堆不同模組的設定都混在同一區了),因此,若想要寫中大型 ASP.NET 應用程式的人,可能不得不學一下如何設計自己的 Configuration 區段了。

其實自創自己的 Configuration 區段也不會太難:

  1. 在專案中加入對 System.Configuration.dll 的參考。
  2. 新增一個類別,繼承自 ConfigurationSection 類別。
  3. 建立要使用的屬性值,並套用 ConfigurationPropertyAttribute,設定屬性的特性。
  4. 在 Web.config 中註冊你的 ConfigurationSection 類別。
  5. 在 Web.config 中使用你的 ConfigurationSection 設定。

下列程式碼即是一個簡單的 ConfigurationSection 範例:

所有要使用在 Configuration 的屬性,都要套用 ConfigurationPropertyAttribute 以設定它的特性,像是名稱,預設值,是否為必要欄位等等。

然後在 Web.config 中的 configSections 區段中註冊它:

<configuration>
   <configSections>
      <section name="ActionPanelContainer" type="ActionPanelSection"  />
   </configSections>
</configuration>

接著就可以在 Web.config 中使用了。

<configuration>

...

  <ActionPanelContainer 
    ContainerControlID="phControls"
    DisplayDefaultActionPanel="true"
    DefaultActionPanelControlUrl="~/Controls/TestDefaultControl.ascx" />


...

</configuration>

是不是很簡單呢?

定義好之後,在程式中可利用 ConfigurationManager.GetSection() 來叫用它: