2011-09-16 36 views
0

我有一個ASP.NET Web應用程序,我正在部署,並且試圖找出最佳方法來管理應該在啓動時指向哪個環境,並確保我沒有忽略任何選項。什麼是遠程配置正在運行的asp.net web應用程序的最佳方式?

首先有點背景。

該應用程序是網頁從一個構建服務器自動部署,使用由所述持續構建產生的僞影。部署軟件包包含了每個可用的環境配置設置,所以你最終的東西是這樣的:

/Config/Environments/Development.xml 
/Config/Environments/UAT.xml 
/Config/Environments/Production.xml 

的問題是,什麼是來指示該應用程序的最佳方式,當它啓動時,它應該處於何種環境配置文件加載?

理想情況下,我想能夠改變運行的應用程序如果有可能的當前環境下,但我很高興能跳過這個現在是如果需要的話我可以一直做了重新部署。

我也想避免改變任何由構建創建的文物,特別是因爲其部署到Web包是一個zip文件,這樣做將意味着重建Web部署包。

我想出了以下選項:

  1. 使用環境變量在目標機器上,在與啓動什麼樣的環境了暗示,如果不存在,默認情況下發展。這樣做的主要缺點是我不能在指向不同環境的同一臺機器上運行應用程序的兩個實例,並且由於我們通常將uat和臨時環境部署到同一臺機器,這可能會成爲問題。

  2. 遠程編輯web.config指示着,我不知道如何做到這一點就其環境,但它可能是最好的選擇(?)。

  3. 您可以使用web部署來做些事情,例如告訴它在運行時設置web.config的值,但我不知道這是否可行(?)。

我是否缺少明顯的東西?任何幫助將不勝感激!

回答

0

原來的第三個選項是實際可行的,我所做的是以下幾點:

在包含我想改變參數的Web應用程序項目的根目錄下創建文件parameters.xml

<parameters> 
    <parameter name="Environment" 
    description="Please provide the environment name for the application." 
    defaultValue="Development" 
    tags=""> 
    <parameterEntry 
     kind="XmlFile" 
     scope="\\web.config$" 
     match="/configuration/appSettings/add[@key='Environment']/@value" /> 
    </parameter> 
</parameters> 

創建時會創建一個SetParameters.xml與部署包位於同一位置。

您可以更新SetParameters.xml與要部署的時候你的部署步驟運行環境的價值,例如在的MSBuild這應該是這樣的:

<XmlUpdate 
    XmlFileName="$(DeployFolder)\Project.SetParameters.xml" 
    Xpath="/parameters/setParameter[@name='Environment']/@value" 
    Value="$(Environment)" /> 

現在可以運行你的deploy.cmd它將在遠程機器上部署時設置參數。

0

如果您要將多個實例部署到同一臺計算機,那麼我認爲文件路徑可能會有所幫助?例如部署到文件夾中具有環境名稱的文件路徑:C:\ inetpub \ dev 這可能是最簡單的方法。

如果你選擇1,我會使用註冊表通過環境變量。

您也可以大概看一下目標環境中構建腳本取決於你使用的生成服務器上。

相關問題