【发布时间】:2016-01-26 09:16:48
【问题描述】:
我们正在通过 MSDeploy API 将 ASP.Net 应用程序部署到 IIS。我们只想更新现有网站。在我们的 ...pubxml 中,我们定义了以下内容:
<ItemGroup>
<MSDeployParameterValue Include="$(DeployParameterPrefix)ConnectionstringA-Web.config Connection String">
<UpdateDestWebConfig>False</UpdateDestWebConfig>
</MSDeployParameterValue>
<MSDeployParameterValue Include="$(DeployParameterPrefix)ConnectionstringB-Web.config Connection String">
<UpdateDestWebConfig>False</UpdateDestWebConfig>
</MSDeployParameterValue>
</ItemGroup>
默认情况下,发布时创建的 setParameters.xml 如下所示:
<setParameter name="ConnectionstringA-Web.config Connection String" value="metadata=res://*/itrDTO.csdl|res://*/itrDTO.ssdl|res://*/itrDTO.msl;provider=System.Data.SqlClient;provider connection string="data source=devServer;initial catalog=devDB;User Id=devUser;Password=devPW;MultipleActiveResultSets=True;App=EntityFramework"" />
<setParameter name="ConnectionstringB-Web.config Connection String" value="data source=devServer;initial catalog=devDB;integrated security=True" />
我还尝试在我的项目中使用此配置创建一个“Projectname.wpp.targets”:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<AutoParameterizationWebConfigConnectionStrings>false</AutoParameterizationWebConfigConnectionStrings>
</PropertyGroup>
</Project>
结果是连接字符串没有在 setparameters.xml 中创建。
但是,这里的所有配置组合都在更改目标服务器上 web.config 中的连接字符串。如果我们通过 IIS-ManagementUI 导入包并且当我们通过 MSDeploy API 部署包时,就会发生这种情况。
我为“参数化”找到的所有示例 - 主题都是针对 IIS 管理过程的。据我了解参数化,这仅对手动安装更新有用,因此管理员有一个 UI 来配置东西。但是当我们更新客户的系统时,我们没有 UI。
更新: 当我使用 Visual Studio 发布时,这是一个有趣的结果: 我认为这意味着“嘿,WebDeploy,让你的手远离连接字符串!”
【问题讨论】:
标签: connection-string msdeploy webdeploy web.config-transform