1. machine.config 文件中的restartOnExternalChanges屬性,指定對外部配置包含文件進行更改后是否需要重新啟動應用程序。設置為false即不會重啟應用程序。注意是外部文件,而非web.config文件本身。
修改web.config肯定還會重新啟動應用程序域的,Web還是會斷線,有點像百貨公司把大家都趕出來,再開門讓大家進來。
configSource屬性對web.config進 行拆分。如
<profile configSource="profile.config" restartOnExternalChanges="true" />
默認情況下,如果特定配置節的 config文件內容更改,iis是察覺不到的,所以不會重啟程序池。 假如你需要在 特定配置節config文件修改后能讓iis自動察覺到並進行重啟, 可以利用 RestartOnExternalChanges屬性,設置為true。
2. 另外其他會重啟應用程序的條件
上傳DLL 重啟服務器 重啟iis 有目錄被刪除時
3. 關於拆分web.config文件分而治之從以下幾點考慮:
a. 經常發生變化
某些配置節我們在開發時經常要修改或更新,如果能單獨拉出來進行配置,這樣修改時就不必碰web.config。 不同環境下的web.config都引用了同一個配置節config,所以這樣的修改只需要做一次,而不必去修改所有環境的web.config。
b. 內容行數特別多
有時候web.config里有些配置節 都是一大坨一大坨的,影響了web.config整體的審美觀。 我們完全可以把這些大 坨的配置節內容單獨抽取出來, 這樣一來,web.config就簡潔多了,也便於閱讀 。 c. 不同環境下,配置節內容是不一樣的
我們經常會有這樣的配置節, 對於這種情況,我們完全可以考慮拆分出來, 並且生成不同環境下的配置文件。 而不同環境下的web.config只要引用對應環境的配置節文件即可。 即使環境發生了變化, 我們也不需要去動web.config, 只要去修改相應環境下配置節文件即可。
當然,以上這三種特征不是互斥的 ,很可能某一配置節含有以上兩種或三種特征。這些配置節更需要我們認真對待,通過多重策略來進行拆分。
4. 分而治之怎么能各得其所,命名規則上來區分
如果web.config很復雜, 那拆分后的結果可能會多出一堆***.config文件, 所以我們需要一套簡單有效的命名規范來管理好這么多配置文件。
a. Web.config:在不同環境下的文件 可以命名為Web.local.config, Web.beta.config, Web.release.config
b. 特征1,2配置節文件: 可以取配置節的名字來命名文件, 比如profile.config, 規范一下應該是Web.profiling.config, 類似還有Web.httpHanders.config, Web.httpModules.config等等。
c. 特征3配置節文件: 假如有個dbConfig配 置節(不同環境下的數據庫連接配置), 我們可以命名為 Web.dbConfig.local.config, Web.dbConfig.beta.config, Web.dbConfig.release.config。
通過分而治之的管理和規范的命名, 我們就可以輕松地進行配置管理,而不必整天面對那一大坨 看似一樣 又有些不太一樣配置節點。1-1-6*2-3-2*6-3*8-9