我有一个使用msdeploy部署的Web应用程序. 我在项目中定义了以下parameters.xml文件: parameters parameter name="Database Server" description="Location of your database server." defaultValue="localhost" tags="DBServer, S
我在项目中定义了以下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中使用“导入应用程序”选项时,使用其他参数提供的值正确填充这些替换字段.
但是,当我使用Application.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批处理文件正确替换这些值吗?
你可能没有意识到的一个特点……如果Application.SetParameters.xml文件包含连接字符串的setParameter元素,则WebDeploy将按原样使用该值.即根本不会尝试进行任何替换.
如果从SetParameters.xml文件中删除了该setParameter引用,WebDeploy将识别出应该使用定义的默认值,并根据其他参数的值按预期计算它.