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;
使用以上方法就可以读取自定义配置信息,并在程序中使用。