我有一个使用msdeploy部署的Web应用程序。
我在项目中定义了以下parameters.xml文件:
<parameters>
<parameter
name="Database Server"
description="Location of your database server."
defaultValue="localhost"
tags="DBServer, SQL">
</parameter>
<parameter
name="Database Name"
description="Name of the database for your application."
defaultValue="MyDatabase" tags="DBName, SQL">
</parameter>
<parameter
name="Database Username"
description="User name to access your application database."
defaultValue="myusername"
tags="SQL, DbUsername">
</parameter>
<parameter
name="Database Password"
description="Password for the Database Username."
defaultValue="mypassword"
tags="SQL, DbUserPassword">
</parameter>
<parameter
name="RTPOne-Web.config Connection String"
description="Connection string to enter into config"
defaultValue="Data Source={Database Server};Initial Catalog={Database Name};User Id={Database Username};Password={Database Password};Connection TimeOut=30;Pooling=false;Max Pool Size=500;"
tags="Hidden, SQL">
<parameterEntry kind="XmlFile" scope="\\web\.config$" match="//*[local-name()='connectionStrings']/*[local-name()='add'][@name='RTPOne']/@connectionString" tags="Sql, SqlConnectionString, Hidden" />
<parameterEntry kind="XmlFile" scope="\\web\.config$" match="//*[local-name()='appSettings']/*[local-name()='add'][@key='DBConnStr']/@value" tags="" />
</parameter>
</parameters>
最后一个参数使用以下替换字段:
{Database Server}
{Database Name}
{Database Username}
{Database Password}
当我在IIS 7.5中使用“导入应用程序”选项时,这些替换字段会使用其他参数提供的值正确填充。
但是,当我使用 应用程序 .Deploy.cmd 文件通过命令行部署应用程序时,这些值都没有被正确替换我最终得到一个如下所示的连接字符串:
Data Source={Database Server};Initial Catalog={Database Name};User Id={Database Username};Password={Database Password};Connection TimeOut=30;Pooling=false;Max Pool Size=500;
使用部署包生成的 Application .SetParameters.xml文件包含正确的默认值。我期望Deploy.cmd批处理文件应该能够使用它的默认值:
<?xml version="1.0" encoding="utf-8"?>
<parameters>
<setParameter name="IIS Web Application Name" value="Default Web Site/MyApplication" />
<setParameter name="Database Server" value="localhost" />
<setParameter name="Database Name" value="MyDatabase" />
<setParameter name="Database Username" value="MyUsername" />
<setParameter name="Database Password" value="MyPassword" />
<setParameter name="Web.config Connection String" value="Data Source={Database Server};Initial Catalog={Database Name};User Id={Database Username};Password={Database Password};Connection TimeOut=30;Pooling=false;Max Pool Size=500;" />
</parameters>
我能做些什么来让Deploy.cmd批处理文件正确替换这些值吗?
答案 0 :(得分:1)
你可能不知道的一个特点......
如果Application.SetParameters.xml文件包含连接字符串的open(ARGV.first) do |file|
file.seek(0, IO::SEEK_END)
loop do
changes = file.read
unless changes.empty?
if changes =~ /query.*ns1.localdomain/
system "echo '#{changes}' | /usr/sbin/sendmail berit\n"
end
end
end
end
元素,则该值将由WebDeploy 按原样使用。即根本不会尝试进行任何替换。
如果从SetParameters.xml文件中删除了setParameter引用,WebDeploy将识别出应该使用定义的默认值,并根据其他参数的值按预期计算它。
答案 1 :(得分:0)
您可以在外部使用 Application.SetParameters.xml 并替换您需要的值,并将其作为参数传递给Application.Deploy.cmd。在可能的情况下,我为每个环境创建了单独的参数文件,并根据我们正在部署的环境传递它们。您也可以在application.deploy-readme.txt中找到详细信息。
如果您需要更多详细信息,请与我们联系