2009-02-12 78 views
3

在我正在處理的項目上,我們有一個包含三個配置文件的Web應用程序; 的Web.Config Web.Config.TestServer Web.Config.LiveServerASP.NET應用程序中用於開發和生產的不同配置文件

當我們發佈到測試服務器,Web.Config中被重命名爲Web.Config.Development和Web.Config.TestServer被重命名爲網絡。配置,使配置對應用程序有效。

這是相當繁重保持三個非常相似的配置文件是最新的,並且該系統跨多個它們是該項目的一部分應用中使用;不只是網站。

配置的差異是最常見的本地目錄或路徑,URL,IP,端口號和電子郵件地址。

我正在尋找更好的方法。

回答

3

雖然你的方法似乎很乏味,但我覺得它是最好的方法。

我以前把我所有的配置在一個單一的web.config文件,並且根本就「生產」部分註釋掉。

在這之後不久,我不得不做一個「混合型」試驗中,在我的查詢數據從生產服務器的到來,但新的數據插入到測試數據庫。那時我不得不開始對配置塊的哪些部分進行評論/取消註釋,這成了一場噩夢。

同樣,我們有我們的服務器管理員從測試到生產完成實際的遷移,其中大部分是不夠的,在.NET流利知道如何管理的web.config文件。他們只是簡單地看一個.test或.prod文件並遷移正確的文件就容易多了。

你可以使用像一個數據庫來存儲所有的配置,但此時你運行到另一個抽象層,你必須來管理對事物的頂部。

一旦你瞭解了你的兩個(或三個)配置文件將如何設置的訣竅或模板,管理它們變得更加容易,並且你可以讓你的測試服務器配置在一些獨特的測試中被修改,而沒有太多麻煩。

+0

SOOOO,什麼答案這裏是執行的變換? – DataGreed 2013-03-11 08:29:23

2

如果在混合DB服務器,您可以創建具有的配置,屬性名,並在它的屬性值,那麼所有你需要做的是在web.config改變一個值的表,配置名稱(dev,test,prod)。

如果每個配置都有不同的dbs,那麼唯一不同的是連接字符串。

1

使用配置轉換,這裏有一個關於它的博客。

http://blogs.msdn.com/b/webdevtools/archive/2009/05/04/web-deployment-web-config-transformation.aspx

基本上你創建一個名爲網站的目標。{構建配置}的.config。在每個目標文件中,您都可以編寫轉換,您可以在其中添加,刪除和修改節點和屬性。例如可以

web.staging.configss 

<?xml version="1.0"?> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <connectionStrings> 
     <add name="personalDB" 
      connectionString="Server=StagingBox; Database=personal; User Id=admin; password=StagingPersonalPassword" 
      providerName="System.Data.SqlClient" xdt:Transform="Replace" xdt:Locator="Match(name)" /> 
     <add name="professionalDB" 
     connectionString="Server=StagingBox; Database=professional; User Id=professional; password=StagingProfessionalPassword" 
     providerName="System.Data.SqlClient" xdt:Transform="Replace" xdt:Locator="Match(name)"/> 
     </connectionStrings> 
</configuration> 

然後,通過調用MSBuild {project file} /t:TransformWebConfig /p:Configuration=Staging

相關問題