使用外联文件对Web.config的appSettings进行配置

  • Post author:
  • Post category:其他


使用外联文件对Web.config的appSettings进行配置

在Asp.net开发中Web.config文件中的appSettings的使用几乎是必不可少的,我们经常会在appSettings文件对系统做一些全局参数的配置,做法是添加一系列的add节点,为add节点设置key和value属性,例如配置登录是否需要验证码。在Web.config文件中大致的写法会是这样:

Web.config文件中appSettings节点的配置
1
2
3

<


appSettings


>



<


add


key


=


"NeedLoginCode"


value


=


"Not"


/>

</


appSettings


>

随着系统的深入开发,越来越多的add节点会被加入到appSettings节点中,单服环境、内网测试环境、外网测试环境、正式环境,不同的环境中同一个add节点的value可能会是不同的,于是可能会出现以下的配置,对不同的环境做不同的配置,然后把不属于要发布到的环境的配置注释掉:

不同环境下对同一个appSettings的add节点进行配置
1
2
3
4
5
6
7
8

<


appSettings


>



<!-- 登录是否需要验证码:单服、内网测试 -->



<


add


key


=


"NeedLoginCode"


value


=


"Not"


/>



<!-- 登录是否需要验证码:外网测试 -->



<!-- <add key="NeedLoginCode" value="Num"/> -->



<!-- 登录是否需要验证码:正式平台 -->



<!-- <add key="NeedLoginCode" value="NumAndChar"/> -->

</


appSettings


>

这样子做带来的不便是每次发布都要使用相应的节点,把不对应的节点注释掉,并且appSettings节点膨胀得厉害,看起来有点恶心…

之前在网上找资料的时候发现appSettings节点是可以使用外联文件来配置的,做法比较简单,把appSettings节点抽出来放到一个单独的文件中去,例如我们在根目录的下的configs目录创建一个IntranetAppsettings.xml,这个文件的内容如下:

configs/IntranetAppsettings.xml
1
2
3
4
5
6
7

<?


xml


version


=


"1.0"


encoding


=


"utf-8"


?>

<!-- 单服、内网测试的appSettings配置 -->

<


appSettings


>



<!-- 登录是否需要验证码 -->



<


add


key


=


"NeedLoginCode"


value


=


"Not"


/>



<!-- 其他的配置... ... -->

</


appSettings


>

有了上面的文件后,Web.config文件的appSettings节点修改如下,把configs/IntranetAppsettings.xml文件链接到Web.config文件的appSettings节点:

修改后的Web.config文件
1
2
3
4

<?


xml


version


=


"1.0"


encoding


=


"utf-8"


?>

<


configuration


>



<


appSettings


configSource


=


"configs/IntranetAppsettings.xml"


/>

</


configuration


>

同样的道理,创建另外几个和configs/IntranetAppsettings.xml类似的文件,用于做其他环境的配置,在发布的时候,只要修改Web.config文件中appSettings节点的configSource属性就OK鸟~