ASP.NET MVC 學習筆記-7.自定義配置資訊

生命夢想發表於2018-05-18

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;

 

使用以上方法就可以讀取自定義配置資訊,並在程式中使用。

相關文章