web.config配置文件中的configSource属性

每个网站里都会有一个web.config文件。修改Web.config文件会导致IIS重启,就是随意的回车一下也会导致重启。微软建议,不要将需要修改的配置内容保存在web.config中。而是单独放在一个config中。但是对于单独存放的config文件,怎么来对其进行修改和读取呢? 例如 可以指定 web.config 中的 appSetting 单独放在 一个 config.config 文件中。就是通过 configSource 属性来指定。

原本的web.config

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
  <appSettings>
    <add key="CacheTimeInfo" value="30" /> 
    <add key="CacheTimeNews" value="10" /> 
    <add key="CacheTimeProduct" value="60" /> 
    <add key="CacheTimeTrade" value="5" /> 
    <add key="SiteName" value="中国叉叉网"/> 
    <add key="SiteDomain" value="chinaxx.com"/> 
  </appSettings>
  <connectionStrings/> 
  <system.web> 
    <compilation debug="false"> 
    </compilation> 
    <authentication mode="Windows" /> 
  </system.web> 
</configuration>

拆分后的文件

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
  <appSettings configSource="config.config" />
<connectionStrings/> 
  <system.web> 
    <compilation debug="false"> 
    </compilation> 
    <authentication mode="Windows" /> 
  </system.web> 
</configuration>

被拆分出来的config文件 config.config

<?xml version="1.0" encoding="utf-8"?>
<appSettings>
<add key="CacheTimeInfo" value="30" />
<add key="CacheTimeNews" value="10" />
<add key="CacheTimeProduct" value="60" />
<add key="CacheTimeTrade" value="5" />
<add key="SiteName" value="中国叉叉网"/>
<add key="SiteDomain" value="chinaxx.com"/>
</appSettings>

经过拆分后,修改config.config不会导致IIS重启。

说明:我的config.config文件和webconfig在同一级目录, 也可以放在不同的目录下面, 但需要在configSource属性里面指明路径,另外,我这里叫config.config,你可以随意改变,比如叫app.config。

注意config.config的写法。

一旦在web.config中的appSettings节点中添加configSource,就不能再添加Add节点了。也就是说你不能在webconfig里放一部分<add>,然后再config.config里在放一部分<add>

修改时,访问的节点必须存在否则会报:未将对象引用设置到对象的实例。

原文地址:https://www.cnblogs.com/answercard/p/5888120.html