3

我有一个 Web 部署包,它生成一个 App.SetParameters.xml 文件以及所有其他包文件。SetParameters 文件有几个setParameter节点应该更新连接字符串,但每当我执行 Web 部署脚本时,它总是报告0 parameters changed. 查看部署的 Web.config 文件表明它们确实没有更新。

部署脚本的详细输出没有说明它为什么跳过我的参数;它甚至从未提及它们。但是,如果我将其中一个setParameter标签更改为一个parameter标签,它会给我一个错误:

错误:已定义参数“ConnectionString-Web.config Connection String”。

因此,显然是在我的 Web.config 中找到该参数。我对为什么它会跳过这样的参数感到完全困惑。

环境:

  • 视觉工作室 2012
  • 网络部署 3.0
  • 视窗服务器 2008 R2
  • IIS 7
4

1 回答 1

1

这个问题与这个问题中提出的问题有关。因为我将此解决方案从 Visual Studio 2010 移至 Visual Studio 2012,所以我的所有 Web.config 文件仍将其作为其根节点:

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">

这会导致 Visual Studio 2012 Web.config 转换使用的 xpath 阻塞并导致错误:

No element in the source document matches '/configuration'

但是,这个错误只在构建 Web Deploy Package 时出现,而不是在运行 web deploy 包时出现,所以 Web Deploy 只是认为没有配置部分要更新。您会认为 Web.config 文件中没有配置部分会是一个值得至少警告用户的问题,但显然不是。

解决方案是从基本 Web.config 文件的节点中删除xmlns属性,<configuration>从 Visual Studio 发布包,并确保“源文档中没有元素”警告不再出现在输出中。在那之后,Web Deploy 应该可以毫无问题地遵守您的setParameter指示。

于 2013-04-24T12:10:07.693 回答