ASP.NET程式中的web.config檔案中,在appSettings這個配置節中能夠儲存一些配置,比如,
1 <appSettings> 2 <add key="LogInfoProvider" value="Cookie" />//登入資訊儲存方式 3 </appSettings>
但是這些配置都是單個字串資訊,在某些情況下,無法做到靈活配置。
針對這種情況,使用.Net Framework提供的自定義系統配置方式來進行改善。自定義系統配置方式主要使用到以下幾個類:
ConfigurationManager:通過該類能夠直接獲取Web.config的資訊。
ConfigurationSection:表示配置檔案中的一個配置節的資訊。
ConfigurationElement:表示配置節中的單個配置項資訊。
ConfigurationElementCollection:表示配置項的集合資訊。
ConfigurationPropertyAttribute:對配置資訊一些約束資訊。
使用自定義配置資訊,必須現在web.config配置檔案的頂部進行配置宣告,否則系統無法識別該配置資訊。如下所示:
1 <configuration> 2 <configSections> 3 <section name="TT.appConfiguration" type="TT.Infrastructure.Core.CustomConfiguration.ApplicationConfiguration, TT.Infrastructure.Core" /> 4 <section name="TT.connectionManager" type="TT.Infrastructure.Core.CustomConfiguration.DBConnectionConfiguration, TT.Infrastructure.Core" /> 5 </configSections> 6 <TT.appConfiguration appCode="Location_Management" appName="庫位管理系統"/> 7 <TT.connectionManager> 8 …… 9 </TT.connectionManager> 10 …… 11 <configuration>
在知道需要配置什麼樣的資訊後,就需要定義讀取配置的實體類資訊,本文以ApplicationConfiguration的建立為例,逐步展開。
1) 建立ApplicationConfiguration類,並指定該配置的配置節名稱,使用ConfigurationManager.GetSection(SECION_NAME)方法就能夠讀取到該配置,並將該資訊強制轉換為ApplicationConfiguration類即可。
1 /// <summary> 2 /// 程式配置資訊 3 /// </summary> 4 public class ApplicationConfiguration : ConfigurationSection 5 { 6 private const string SECTION_NAME = "TT.appConfiguration"; 7 8 /// <summary> 9 /// 獲取程式配置資訊 10 /// </summary> 11 /// <returns></returns> 12 public static ApplicationConfiguration GetConfig() 13 { 14 ApplicationConfiguration config = ConfigurationManager.GetSection(SECTION_NAME) as ApplicationConfiguration; 15 return config; 16 } 17 }
2) 定義自定義配置的屬性資訊,並使用ConfigurationPropertyAttribute對屬性進行約束。約束的資訊主要包括:配置節名稱Name、是否必須IsRequired、預設值DefaultValue等。
1 /// <summary> 2 /// 應用系統程式碼 3 /// </summary> 4 [ConfigurationProperty("appCode", IsRequired = false, DefaultValue = "")] 5 public string AppCode 6 { 7 get 8 { 9 return (string)this["appCode"]; 10 } 11 } 12 13 /// <summary> 14 /// 應用系統名稱 15 /// </summary> 16 [ConfigurationProperty("appName", IsRequired = false, DefaultValue = "")] 17 public string AppName 18 { 19 get 20 { 21 return (string)this["appName"]; 22 } 23 }
3) 自定義配置資訊的獲取。
1 var appCode = ApplicationConfiguration.GetConfig().AppCode; 2 var appName = ApplicationConfiguration.GetConfig().AppName;
使用以上方法就可以讀取自定義配置資訊,並在程式中使用。