我們都知道,在asp.net中修改了設定檔web.config後,會導致應用程式重啟,所有會話(session)丟失。然而,應用程式的配置資訊放在設定檔裡是最佳選擇,在後台修改了配置後導致所有會話丟失是非常不爽的事情,這個時候可將設定檔中經常需要改變的參數配置節放到外面來,例如appSetting節。
1.來個最簡單的小例子
<?xml version="1.0"?><configuration> <appSettings> <add key="test" value="aehyok"/> </appSettings></configuration>
然後在代碼中進行調用,我在VS2010中建的是控制台程式,當然還需要添加引用System.Configuration;
namespace ConsoleApplication1{ class Program { static void Main(string[] args) { string str = ConfigurationManager.AppSettings["test"].ToString(); Console.WriteLine(str); Console.ReadLine(); } }}
2.接下來看看最佳化後的設定檔結構,先來看看原來的設定檔的修改
<?xml version="1.0"?><configuration> <appSettings configSource="config\My.config" /></configuration>
然後在項目中添加一個Config檔案夾,再在其中添加一個設定檔My.config
其中結構如下
<?xml version="1.0" encoding="utf-8" ?><appSettings> <add key="test" value="aehyok"/></appSettings>
這樣子照樣可以進行讀取設定檔。
現在可以在一個單獨檔案包括所有支援 configSource 屬性的配置元素的配置設定。但是,當使用 configSource 屬性時,由於沒有元素設定的合并,因此您必須將整個節移動到單獨檔案。使用 configSource 屬性時,對 Web.config 檔案有一次寫入操作。這會導致應用程式重新啟動,但是隨後對該節的更新會直接寫入單獨檔案,而不會導致後面的應用程式重新啟動。
只能包含一次configSource;
在網站運行時,如果修改 Web.Config 檔案會引起網站的重啟,而修改 My.Config 檔案則不會,同時也提高了設定檔的可讀性
注意,configSouce中的檔案路徑只能為相對實體路徑,也就是只能為反斜線(\),不能用斜杠(/)。