【问题标题】:WebDeploy Rollback Partial BackupWebDeploy 回滚部分备份
【发布时间】:2016-11-22 14:45:53
【问题描述】:

我正在使用 WebDeploy,但遇到了一个我似乎无法解决的问题。首先,我将概述我的想法,然后进入我遇到的问题。

目前,我们在 IIS 中的网站根目录下运行着许多应用程序。我们希望能够在应用程序级别而不是网站级别上推出和回滚。

当我们想要推出一个应用程序时,用户将在 IIS 中创建一个 webdeploy 包。然后,他们将使用 Web Deploy 推出此功能。目前,当 WebDeploy 推出一个应用程序时,它会备份整个网站(许多应用程序),以防我们需要回滚。这适用于推出,但回滚是我遇到问题的地方。看,在回滚时,我不想回滚整个网站。我只想推出在此推出期间发生的变化。这对于避免踩到可能正在进行的其他部署的脚趾很重要。

为了满足这个要求,我编写了基本上将初始推出包与备份包进行区分的代码。如果该文件存在于初始推出包中,我们会在备份包中获取相应的文件。一旦我们从备份中获得了与初始部署相对应的所有文件,我从备份中复制 systeminfo.xml、parameters.xml 和 archive.xml 并使用所有这些文件创建一个新的 zip 文件,我将其称为回滚包。现在,回滚包具有与备份包完全相同的文件夹结构,只是缺少备份中未在初始推出时替换的文件。我遇到的问题是,当我将这个新的回滚包发送到 web 部署 api 时,我没有收到任何错误消息,但是 web 服务器上的文件没有被回滚文件替换。经过进一步调查,我发现 web deploy api 返回一个 DeploymentChangeSummary 对象。此对象显示复制的字节、替换的文件等全为零(基本上没有替换任何内容,但 web 部署显示没有错误)。当我通过相同的代码传递整个备份文件时,Web 服务器上的文件将被替换,并且 DeploymentChangeSummary 显示复制的文件和字节。

为什么我可以推出网站的整个备份,而不是部分备份?我觉得这可能与将 .xml 文件从备份复制到推出有关,因为它们可能需要修改,但我不确定。另外,我没有使用校验和。

【问题讨论】:

    标签: webdeploy microsoft-web-deploy


    【解决方案1】:

    我建议手动运行 MSDeploy.exe 命令以针对要打包的 Web 应用程序。如果您保留这些包的存档,并且当它们应用于目标服务器时,您的回滚可以简单地重新运行最后一个好的包。

    "c:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:manifest="manifest.source.xml" -dest:package=websitepackage.zip
    

    以下帖子将介绍从命令行手动创建包的步骤。在这种情况下,它适用于 ASP.NET 网站,但适用于任何 ASP.NET 站点/应用程序:

    http://www.dotnetcatch.com/2016/06/23/deploy-an-asp-net-website-not-web-application-with-msdeploy/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      相关资源
      最近更新 更多