允許ASP.NET應用程序知道它運行在哪個環境的建議方式是什麼?我的應用程序可以在這些環境中運行:如何配置ASP.NET應用程序的環境?
- 內的Visual Studio調試
- 一個自動化系統測試
- 部署一個臨時服務器上
- 部署在生產服務器上
在每這些環境應用程序需要一些不同的配置。環境之間的主要區別是使用哪個數據庫連接設置,但也有其他差異。
這是我曾嘗試:
- 我一直在使用Visual Studio中的「配置」選項嘗試。默認情況下有兩個:發佈和調試。我試圖用我的四種環境中的標識替換這兩個。然後可以使用這些配置將轉換應用於Web.config文件。這裏的問題是選擇配置發生在構建時間,我想編譯我的應用程序,然後在運行在Web服務器上之前選擇環境。在Visual Studio內部進行調試時,Web.config轉換也不會發生,所以不會告訴應用程序它在調試環境中運行,它不會得到任何環境。我在Use Visual Studio web.config transform for debugging找到了一個解決方法,但它似乎不能很好地工作。我必須更改項目屬性中的配置,這是一個緩慢的過程。
- 我試過使用環境變量。這樣,我可以從應用程序外部設置變量MYAPP_ENV = dev,並且我可以在C#中將其讀取爲
string env = System.Environment.GetEnvironmentVariable(「MYAPP_ENV」);
但是我不知道如何從Visual Studio和IIS內部設置這個環境變量。我無法在機器上進行全局設置,因爲同一臺機器需要能夠在多個環境中運行應用程序。
那麼,在ASP.NET中如何推薦這樣做呢?在Ruby on Rails中,我將使用RAILS_ENV環境變量,並且在PHP中,我將包含一個文件,該文件未檢入存儲庫並添加到版本控制系統的忽略列表中。
,如果你這樣做,但我會嘗試使用,以避免目前尚不清楚,訪問這些值編寫特定於環境的代碼(例如'if env ==「dev」{else else {}',因爲這樣你的網站在不同的環境中的行爲就會有所不同,任何需要改變的值都應該在配置文件中進行修改(參見AaronS答案) – Jeff 2012-01-05 15:15:51