如何强制MSDeploy API保留现有的Connectionstring?

时间:2016-01-26 09:16:48

标签: connection-string msdeploy webdeploy web.config-transform

我们正在通过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>

默认情况下,在publish上创建的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=&quot;data source=devServer;initial catalog=devDB;User Id=devUser;Password=devPW;MultipleActiveResultSets=True;App=EntityFramework&quot;" />
    <setParameter name="ConnectionstringB-Web.config Connection String" value="data source=devServer;initial catalog=devDB;integrated security=True" />

我还试图创建一个&#34; Projectname.wpp.targets&#34;在我的项目中使用此配置:

<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部署包时会发生这种情况。

我为&#34;参数化找到的所有例子&#34; - 主题适用于IIS管理过程。据我了解参数化,这仅适用于手动安装更新,因此管理员可以使用UI来配置内容。但是,当我们更新客户的系统时,我们没有用户界面。

更新: 当我使用Visual Studio发布时,这是有趣的结果: enter image description here 我认为这意味着&#34;嘿WebDeploy,让你的手脱离连接字符串!&#34;

当我预览更改时,结果如下: enter image description here

1 个答案:

答案 0 :(得分:2)

参数化通过IIS安装UI和命令行都很有用。我们使用WebDeploy / Parameterization来部署所有40多个应用程序。

我刚刚使用新的空白ASP.NET应用程序运行测试,发现默认情况下ConnectionString已参数化,但在将AutoParameterizationWebConfigConnectionStrings MSBUILD属性设置为false后,它没有参数化ConnectionString。参数条目已从parameters.xml和SetParameters文件中删除。

我建议您清除目标网站文件夹并使用此属性集重新发布。

同时仔细检查您是否没有配置转换或其他可能正在更改配置的内容。