我们正在通过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="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" />
我还试图创建一个&#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发布时,这是有趣的结果: 我认为这意味着&#34;嘿WebDeploy,让你的手脱离连接字符串!&#34;
答案 0 :(得分:2)
参数化通过IIS安装UI和命令行都很有用。我们使用WebDeploy / Parameterization来部署所有40多个应用程序。
我刚刚使用新的空白ASP.NET应用程序运行测试,发现默认情况下ConnectionString已参数化,但在将AutoParameterizationWebConfigConnectionStrings
MSBUILD属性设置为false
后,它没有参数化ConnectionString。参数条目已从parameters.xml和SetParameters文件中删除。
我建议您清除目标网站文件夹并使用此属性集重新发布。
同时仔细检查您是否没有配置转换或其他可能正在更改配置的内容。