程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 多重環境下web.config配置管理解決方案

多重環境下web.config配置管理解決方案

編輯:關於ASP.NET

面臨的問題

在大型web應用開發中,為了保證應用的質量,保證用戶 體驗,我們開發時總要經歷從開發,測試,beta到最終上線的過程。

因為不同的測試運行環境的參數都不同,所以在實際開發中我們可以 編寫多個web.config,每個web.config特定用於某個測試運行環境。這一切看上 去似乎順理成章,但隨著你的應用越做越大,web.config也會越來越大,而麻煩 也會隨之而來。

復雜的web.config是很難進行維護的,而且牽一發動全 身。比如你開發時有一個配置節要進行修改,那所有環境下的web.config對應的 節也都要做相應的修改。特別是在web.config很大,各種測試環境又多的情況下 ,SCM管理員肯定會抓狂的……

化整為零

幸運的是 ,從.net 2.0開始,微軟提供了configSource屬性來讓我們可以對web.config進 行拆分。讓我們來看個簡單的例子:

[Web.config]
...
<system.web>
...
<profile configSource="profile.config" />
...
</system.web>
...
[profile.config]
<profile>
<properties>
<add name="Name" type="String" />
<add name="Age" type="Int32" />
</properties>
</profile>

在上面的例子 中,我們對<system.web/profile>配置節進行了拆分,此配置節的具體配 置是存儲在另一個單獨文件profile.config中,而web.config只需要通過 configSource這個屬性來指明配置節的具體配置存儲在哪個文件中,web.config 就會在運行時自動去尋找到那個文件並加載。

在進行拆分時,我們需要 注意以下幾點:

只允許針對配置節(ConfigurationSection)進行拆分 ,而不能對配置節組(ConfigurationSectionGroup)或元素(Element)進行拆 分。

存儲配置節內容的文件的後綴名需要小心,理論上文件名可以任意 取,web.config都能讀取。但出於安全的考慮,我們的後綴名最好是不能直接通 過url訪問的文件類型,以防止洩漏配置信息。所以.config是可以考慮 的,.xml,.txt等後綴極力不推薦。

默認情況下,如果特定配置節的 config文件內容更改,iis是察覺不到的,所以不會重啟程序池。假如你需要在 特定配置節config文件修改後能讓iis自動察覺到並進行重啟,可以利用 RestartOnExternalChanges屬性,具體參見MSDN。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved