多個config應用

假設一個網站系統存在兩個配置文件web.config和config.config,那麼我如何讀取config.config的配置節呢?System.Configuration名字空間下的接口好象只能讀取web.config中的配置信息。 
爲什麼要配置多個Config文件呢?主要爲一下原因: 
其一:如果我的配置節很多的話web.config會變得很大,不易管理和查找; 
其二:程序運行後對web.config的改動會引起站點的重啓,如果系統管理員修改配置文件也會引起系統站點重啓,這樣會影響系統的運行。 
綜合以上問題,微軟建議: 
不要將需要修改的配置內容保存在web.config中。而是單獨放在一個config中。但是對於單獨存放的config文件,怎麼來對其進行修改和讀取呢? 

例如 可以指定 web.config 中的 appSetting 單獨放在 一個 app.config 文件中。通過 configSource 來指定。 
<configuration> 
<appSettings c /> 

然後在 app.config 文件中加入 <appSettings> 中的內容如 
<appSettings> 
<add key="a" value="changed by application" /> 
</appSettings> 

當 使用WebConfigurationManager的時候就會自動將app.config中的內容加入到web.config中,你可以通過 WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath).AppSettings 來讀取 appSettings的內容。同樣也可以修改appSettings中的內容,但是由於最終修改的是app.config文件,所以可以避免因修改 web.config而引起的restart 。 
修改代碼如下: 
        Configuration cfg = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
        AppSettingsSection appSetting = cfg.AppSettings; 

        //讀取 
        string settingValue = appSetting.Settings["see"].Value; 

        //修改 
        appSetting.Settings["see"].Value = "changed by application"; 
        cfg.Save(); 

web.config文件中: 
    <appSettings configSource="test.config"/> 

test.config文件內容。 
<appSettings> 
  <add key="see" value="changed by application" /> 
</appSettings> 


如果新的config文件存在不同的文件夾下,如何處理? 
web.config文件中: 
<appSettings configSource="office\\test.config"/> 
test.config文件內容不變。

 

轉自:http://www.cnblogs.com/bq-blog/archive/2010/03/05/1679157.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章