在用.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/