2011-09-16 108 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,我会使用注册表通过环境变量。

您也可以大概看一下目标环境中构建脚本取决于你使用的生成服务器上。

相关问题