在用.NET 做机房系统时,遇到了配置文件.config文件,不太懂什么意思,就照葫芦画瓢,自己建立一个.config文件来存放自己的东西,可是到了实现阶段,出问题了,我的配置文件,没有被读取。
经过各种实践,终于把我自定义的配置文件里的参数放到系统默认的app.config文件中,就可以用了。
以为,一个项目只可以有一个配置文件,可是为什么我的其他程序集中也可以建立.config 文件呢??
有很多人在使用config文件都是直接使用appSetting的,把所有的配置参数全都塞到那里,这样做虽然不错,但是如果参数过多,这种做法的缺点也会明显地暴露出来:appSetting中的配置参数项只能按key名来访问,不能支持复杂的层次节点也不支持强类型,而且由于全都只使用这一个集合,你会发现:完全不相干的参数也要放在一起!在网上搜到了一些方法
首先,我们来看一下如何在app.config中增加一个自定义的配置节点。最终的配置文件如下:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="MySection111" type="RwConfigDemo.MySection1, RwConfigDemo" /> <section name="MySection222" type="RwConfigDemo.MySection2, RwConfigDemo" /> <section name="MySection333" type="RwConfigDemo.MySection3, RwConfigDemo" /> <section name="MySection444" type="RwConfigDemo.MySection4, RwConfigDemo" /> </configSections> <MySection111 username="fish-li" url="http://www.cnblogs.com/fish-li/"></MySection111> <MySection222> <users username="fish" password="liqifeng"></users> </MySection222> <MySection444> <add key="aa" value="11111"></add> <add key="bb" value="22222"></add> <add key="cc" value="33333"></add> </MySection444> <MySection333> <Command1> <![CDATA[ create procedure ChangeProductQuantity( @ProductID int, @Quantity int ) as update Products set Quantity = @Quantity where ProductID = @ProductID; ]]> </Command1> <Command2> <![CDATA[ create procedure DeleteCategory( @CategoryID int ) as delete from Categories where CategoryID = @CategoryID; ]]> </Command2> </MySection333> </configuration>
自定义配置文件
又说回来,我自定义的配置文件为什么么有被读取,这就涉及到了文件的读取了。
如果我们不给程序设定路径的话,默认读取的系统的app.config 文件,所以我们自定义的配置文件没有被读取。
要想让自己的配置文件被读取,就需要设置文件的读取路径。
.net有一个ConfigurationManager类可以方面的读取默认的配置文件,如果要读取自定义配置文件,这个类也提供了方法,如下所示:
var configMap = new ExeConfigurationFileMap { ExeConfigFilename = configFile }; var config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None); var configurationSection = config.GetSection(sectionName);
配置文件的种类
其实配置文件不一定就是.config 。 也可以用一个记事本,或者是XML 来写。只要我们给出合理的读取路径,就可以把我们需要的信息读取进去。(未完,待续)
详细博文地址:http://wyx-921.blog.163.com/blog/static/197369279201312894216590/