假設一個網站系統存在兩個配置文件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