ASP NET自定义配置文件设置.docx
ASP NET自定义配置文件设置ASP.NET 自定义配置文件设置 在ASP.NET开发的过程中,我们经常会遇到在开发、测试、发布部署等不同的环境下使用不同的连接字符串,WebAPI的连接。为了避免频频复杂的修改各个配置,因此用到了自定义配置文件设置。 此篇文章使用的自定义配置文件方法为:web.config 增加自定义Section节,相关配置全部放到webconfig。 一、 配置Web.config文件。 1.0 首先需要在configuration节点下的configSections节点中进行注册,如下: <sectionname="ConnectionStringSection"type="CustomConfig.Configrationner.ConnectionStringSection,CustomConfig" /> 注:CustomConfig.Configrationner.ConnectionStringSection指的是:此section 可解析的实体所存放的, CustomConfig指的是:此section所在的程序集的名称。 2.0 然后将ConnectionStringSection节点配置在configuration节点下即可,具体如下: 二、 配置调用ConfigrationSection的文件。 1.0 首先要访问这个自定义节点,需要通过类来配置,我们得首先定义一个父节点类,父节点类包含子节点集合,如下: namespace CustomConfig.Configrationner publicclassConnectionStringSection : ConfigurationSection ConfigurationProperty("Publish") publicConnectionStringCollection Publish get return (ConnectionStringCollection)this"Publish" ConfigurationProperty("Develop") publicConnectionStringCollection Develop get return (ConnectionStringCollection)this"Develop" ConfigurationProperty("Test") publicConnectionStringCollection Test get return (ConnectionStringCollection)this"Test" 2.0 子节点集合再包含子节点元素,如下 namespace CustomConfig.Configrationner publicclassConnectionStringCollection : ConfigurationElementCollection protectedoverrideConfigurationElement CreateNewElement returnnewNameValueSettings; protectedoverrideobject GetElementKey(ConfigurationElement element) return (NameValueSettings)element).Name; /写一个索引器,方便的访问该集合中的元素。 /如果不写,则只有foreach来访问。 publicNameValueSettingsthisint index get returnthis.BaseGet(index) asNameValueSettings; publicnewNameValueSettingsthisstring key get returnthis.BaseGet(key) asNameValueSettings; 3.0 定义子节点元素类,如下 namespace CustomConfig.Configrationner /<summary> /连接字符串类 /</summary> publicclassNameValueSettings : ConfigurationElement ConfigurationProperty("name", IsRequired = true) publicstring Name get returnthis"name".ToString; set this"name" = value; ConfigurationProperty("connectionString", IsRequired = true) publicstring ConnectionString get returnthis"connectionString".ToString; set this"connectionString" = value; ConfigurationProperty("providerName") publicstring ProviderName get returnthis"providerName".ToString; set this"providerName" = value; 三、 获取自定义配置里的值。 1.0 使用如下代码取得自定义的值: /获取连接字符串节点 ConnectionStringSection connectColl = (ConnectionStringSection)ConfigurationManager.GetSection("ConnectionStringSection"); /设置开发连接字符串 string connectionString = connectColl.Develop"ZaiBangEntities".ConnectionString.ToString; 四、 配置EntityFramework 数据库连接。 1.0 定义EntityFramework初始化数据库连接的类: namespace CustomConfig.Configrationner publicclassConfigrationTools #region自定义配置:数据库连接 /<summary> / * /注:(使用自定义数据库连接,需修改路径 Entities.edmx/Entities.Context.cs 下的构造文件) /由: public Entities : base("name=Entities") /改为: public Entities : base(CustomConfig.Configrationner.ConfigrationTools.BuildConnection, true) / * /</summary> publicstaticEntityConnection BuildConnection string connectionString = "" /获取连接字符串节点 ConnectionStringSection connectColl = (ConnectionStringSection)ConfigurationManager.GetSection("ConnectionStringSection"); /设置发布连接字符串 /connectionString = connectColl.Publish"ZaiBangEntities".ConnectionString.ToString; /设置开发连接字符串 connectionString = connectColl.Develop"ZaiBangEntities".ConnectionString.ToString; MetadataWorkspace workspace = newMetadataWorkspace(newstring "res:/*/" , newAssembly Assembly.GetExecutingAssembly ); SqlConnection sqlConnection = newSqlConnection(connectionString); returnnewEntityConnection(workspace, sqlConnection); #endregion 2.0 修改路径 Entities.edmx/Entities.Context.cs 下的构造文件 由: public ZaiBangEntities : base("name=ZaiBangEntities") 改为: public ZaiBangEntities : base(CustomConfig.Configrationner.ConfigrationTools.BuildConnection, true) 3.0 需注意数据库连接字符串不能为EntityFramework格式的,而使用通用格式。如下正确: 示例代码下载:CustomConfig.rar 所有配置都放在此文件夹中