我们已经使用本地版本移植到天蓝色的VSTS。
我有一个asp.net mvc Web应用程序,我创建了一个构建版本,使用以下参数创建Web部署包
/p:DeployOnBuild=true
/p:WebPublishMethod=Package
/p:PackageAsSingleFile=true
/p:SkipInvalidConfigurations=true
/p:AutoParameterizationWebConfigConnectionStrings=False
然后我们发布了部署到不同环境的版本,例如DEV,QAL和TST。很好地工作web.config中的所有参数都根据parameters.xml文件进行修改。
现在出现问题,我们不会自动发布到生产中。因此,我将带有setparameters.xml文件的Web部署包修改为满足所需的配置和其他文件,并手动导入到我们的IIS站点。它完成但有这些类型的错误
25/08/2017 2:58:50 PM] Parameter entry 'wordAutomation_EndPoint/1' is applicable to 'C:\agent2\_work\6\s\Main\Clients\Web\WebUI\obj\Release\Package\PackageTmp\Web.config' because of its scope.
[25/08/2017 2:58:50 PM] Parameter entry 'wordAutomation_EndPoint/1' could not be applied to 'C:\agent2\_work\6\s\Main\Clients\Web\WebUI\obj\Release\Package\PackageTmp\Web.config'. Deployment will continue with the original data. Details:
No matches were found for the search string '/configuration/system.servicemodel/client/endpoint[@name='WordAutomationBasicHttpEndpoint']/@address' (type 'XmlFile').
因此,SetParameters.xml文件中的所有参数都不会转换为web.config文件。
所以目前我有一个Web部署包,它将使用发布任务WinRM - IIS Web App Deployment部署到IIS,没有特殊参数,但我不能手动部署相同的包。
有什么想法吗?
西蒙
答案 0 :(得分:0)
一直在进行一些测试,构建参数与此问题无关。
我创建了一个简单的ASP.Net Web应用程序,将一个appSettings添加到web.config(testKey)
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="testKey" value="testValue" />
</appSettings>
然后我添加了一个parameters.xml文件
<parameters>
<parameter name="testKey" defaultValue="123">
<parameterEntry kind="XmlFile" scope="Web.config"
match="/configuration/appsettings/add[@key='testKey']/@value"
/>
</parameter>
</parameters>
将应用程序发布到我的c盘上的Web部署包(.zip)。 setparameters.xml文件如下所示。
<?xml version="1.0" encoding="utf-8"?>
<parameters>
<setParameter name="IIS Web Application Name" value="Test" />
<setParameter name="testKey" value="123" />
</parameters>
然后手动部署我右键单击我们的IIS站点,单击Deploy / Import Application,接受所有默认值,然后我收到以下警告和错误
[29/08/2017 1:13:56 PM]参数输入&#39; IIS Web应用程序名称/ 1&#39; 适用于 &#39; iisApp / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为 其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web 申请名称/ 2&#39;适用于 &#39; SETACL / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为 其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web 申请名称/ 2&#39;适用于 &#39; SETACL / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为 其范围。 [29/08/2017 1:13:56 PM]执行同步传递
1。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web应用程序名称/ 1&#39;适用于
&#39; iisApp / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为 其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web 申请名称/ 2&#39;适用于 &#39; SETACL / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为 其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web 申请名称/ 2&#39;适用于 &#39; SETACL / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为 其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web 申请名称/ 1&#39;适用于 &#39; iisApp / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为 其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web 申请名称/ 2&#39;适用于 &#39; SETACL / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为 其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web 申请名称/ 2&#39;适用于 &#39; SETACL / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为 其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web 申请名称/ 1&#39;适用于 &#39; iisApp / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为 其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web 申请名称/ 2&#39;适用于 &#39; SETACL / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为 其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web 申请名称/ 2&#39;适用于 &#39; SETACL / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为 其范围。 [29/08/2017 1:13:56 PM]没有执行备份。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web应用程序名称/ 1&#39; 适用于 &#39; iisApp / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为 其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web 申请名称/ 2&#39;适用于 &#39; SETACL / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为 其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web 申请名称/ 2&#39;适用于 &#39; SETACL / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为 其范围。 [29/08/2017 1:13:56 PM]来源createApp (C:\ temp \ test \ test \ test \ obj \ Release \ Package \ PackageTmp)不匹配 目标(DefaultWebsite / Test)属性不同 (isDest [&#39;假&#39;&#39;真&#39;])。更新待定。 [29/08/2017 1:13:56 PM] 在createApp上更新操作 (C:\ temp \ test \ test \ test \ obj \ Release \ Package \ PackageTmp)跳过 因为规则ApplicationExistsRule。 [29/08/2017 1:13:56 PM]来源 文件路径 (C:\ TEMP \测试\测试\测试\ OBJ \发布\包\ PackageTmp \的parameters.xml) 与目标不匹配(DefaultWebsite / Test \ parameters.xml) 属性不同(大小[&#39; 306&#39;,&#39; 340&#39;],lastWriteTime [&#39; 08/29/2017 03:42:50&#39; 08/29/2017 03:34:38&#39;])。更新待定。 [29/08/2017 1:13:56 PM]更新文件(DefaultWebsite / Test \ parameters.xml)。 [29/08/2017 1:13:56 PM]参数输入&#39; testName / 1&#39;适用于 &#39; C:\ TEMP \测试\测试\测试\ OBJ \发布\包\ PackageTmp \查看\ Web.config文件&#39; 因为它的范围。 [29/08/2017 1:13:56 PM]参数输入 &#39;测试名/ 1&#39;无法应用 &#39; C:\ TEMP \测试\测试\测试\ OBJ \发布\包\ PackageTmp \视图\的Web.config&#39 ;. 部署将继续使用原始数据。细节:没有比赛 找到了搜索字符串 &#39; /配置/的AppSettings /添加[@name =&#39;密押&#39;] / @值&#39; (类型 &#39; XMLFILE&#39)。 [29/08/2017 1:13:56 PM]属性&#39;大小&#39;平等改变了 比较filePath时为False (DefaultWebsite / Test \ Views \ Web.config)来 C:\ TEMP \测试\测试\测试\ OBJ \发布\包\ PackageTmp \查看\ Web.config文件 因为规则参数化。 [29/08/2017 1:13:56 PM]来源 文件路径 (C:\ TEMP \测试\测试\测试\ OBJ \发布\包\ PackageTmp \视图\的Web.config) 与目标不匹配(DefaultWebsite / Test \ Views \ Web.config) 属性(参数)不同。更新待定。 [29/08/2017 1:13:56 PM]源文件路径 (C:\ TEMP \测试\测试\测试\ OBJ \发布\包\ PackageTmp \视图\的Web.config) 替换为更改的属性(大小[&#39; 1925&#39;,&#39; 1924&#39;])因为规则 参数。 [29/08/2017 1:13:56 PM]更新文件 (DefaultWebsite /测试\查看\ Web.config文件)。 [29/08/2017 1:13:56 PM] 参数输入&#39; testName / 1&#39;适用于 &#39; C:\ TEMP \测试\测试\测试\ OBJ \发布\包\ PackageTmp \的Web.config&#39; 因为它的范围。 [29/08/2017 1:13:56 PM]参数输入 &#39;测试名/ 1&#39;无法应用 &#39; C:\ TEMP \测试\测试\测试\ OBJ \发布\包\ PackageTmp \的Web.config&#39 ;. 部署将继续使用原始数据。细节:没有比赛 找到了搜索字符串 &#39; /配置/的AppSettings /添加[@name =&#39;密押&#39;] / @值&#39; (类型 &#39; XMLFILE&#39)。 [29/08/2017 1:13:56 PM]来源setAcl (C:\ temp \ test \ test \ test \ obj \ Release \ Package \ PackageTmp)不匹配 目标(DefaultWebsite / Test)属性不同 (isDest [&#39;假&#39;&#39;真&#39],setAclUser,setAclAccess)。更新待定。 [29/08/2017 1:13:56 PM]为路径添加ACL(DefaultWebsite / Test) [29/08/2017 1:13:56 PM]来源setAcl (C:\ temp \ test \ test \ test \ obj \ Release \ Package \ PackageTmp)不匹配 目标(DefaultWebsite / Test)属性不同 (isDest [&#39;假&#39;&#39;真&#39],setAclUser,setAclAccess)。更新待定。 [29/08/2017 1:13:56 PM]为路径添加ACL(DefaultWebsite / Test) [29/08/2017 1:13:56 PM]依赖性检查&#39; DependencyCheckInUse&#39; 发现没有问题。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web 申请名称/ 1&#39;适用于 &#39; iisApp / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为 其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web 申请名称/ 2&#39;适用于 &#39; SETACL / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为 其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web 申请名称/ 2&#39;适用于 &#39; SETACL / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为 其范围。 [29/08/2017 1:13:56 PM]同步完成了 1次传递。
站点部署但web.config未使用SetParameters.xml文件中的值进行更新。所以testKey的值应该是123。
我认为它与范围有关,但有点丢失。
答案 1 :(得分:0)
最新答复,但我遇到了同样的问题,该值未在我的web.config中更新。
原来我的问题是由于匹配字符串中的大小写敏感。您在哪里:
match =“ / configuration / appsettings / add [@ key ='testKey'] / @ value”
应该是:
match =“ / configuration / app S ettings / add [@ key ='testKey'] / @ value”
请注意appSettings
中的大写字母。
这就是它为我工作的原因。
答案 2 :(得分:0)
我发现这个问题发生了(或者至少在我身上发生了),因为web.config在<configuration xmlns="http://schemas.microsoft.com/.Netconfiguration/V2.0">
标记中有一个XML模式定义参数,删除了这个XMLNS参数,所以它只是{{1 }}解决了这个问题。