Asp.net

區分開發、登台和生產環境之間的 web.config

  • September 10, 2009

有人對處理環境之間的 web.config 設置差異有什麼好的建議嗎?我考慮在我們的原始碼控制系統中但在 Web 層次結構之外創建一個“配置”文件夾,並讓部署過程複製適當的配置文件(web.dev.config、web.staging.config、web.production.config ) 在部署時放入 web 文件夾。我還看到了有關如何在應用程序啟動時以程式方式更改配置設置(WCF 端點、連接字元串等)的文章。

什麼被認為是最佳實踐,每個人都對這些或其他方法有什麼經驗?

2010 年 9 月更新

值得注意的是,Visual Studio 2010 通過web.config transforms添加了此功能。當您使用建構配置管理器 (Build|Configuration Manager…) 為您的項目創建不同的配置(例如,Debug、Dev、Staging 和 Release)時,VS 會將 web.*.config 文件添加到解決方案中。預設 web.config 包含您將用於調試的基線設置。web.release.config、web.staging.config 等包含 XSLT 轉換,當您基於活動建構配置發布項目時,這些轉換將被應用。

使用新的 VS,您可以使用 Web 配置轉換。

在此處閱讀更多資訊:http: //msdn.microsoft.com/en-us/library/dd465326.aspx

我的方法是擁有多個配置文件。我將所有與環境無關的東西(即不管是開發、登台還是生產)都放在 web.config 文件中。任何特定於環境的內容(即數據庫連接資訊、日誌記錄、調試設置等)我都放入特定於環境的 local.config 文件中。然後,您可以使用 configSource ( <http://weblogs.asp.net/fmarguerie/archive/2007/04/26/using-configsource-to-split-configuration-files.aspx>在 web.config 中包含 local.config 設置)

然後可以將 Web.config 檢入原始碼管理。不要簽入 local.config 文件——這會迫使您在部署腳本中部署正確的文件。

引用自:https://stackoverflow.com/questions/1406157