msdeploy failure: IIS 7.5->8.5: Error: The ApplicationHost.config file is invalid / eventlog error 9000 on destination system

msdeploy failure: IIS 7.5->8.5: Error: The ApplicationHost.config file is invalid / eventlog error 9000 on destination system

使用 msdeploy.exe

的 v7.1(即 cmd 提示符下的版本)、3.6(来自网络平台安装程序)

正在从 Win2008-R2 IIS 迁移到 Win2012-R2

正在尝试移动与 IIS 相关的所有内容。 (是的,我们已经定制了 applicatiohost.config,但我们不知道所有的模组...这就是我们使用迁移工具来移动所有内容的原因...)

命令我是运行:

C:\Program Files\IIS\Microsoft Web Deploy V3>msdeploy 
-verb:sync -source:webserver,
computername=WIN-67E8GTGADGJ 
-dest:webserver,computername=192.168.2.21,
userName="administrator",password="###"

输出:

Info: Using ID '1d59e6bd-0f89-4479-9853-98e164c9f613' for connections to the rem
ote server.
Info: Using ID '0c99bd7f-faa3-4737-ac35-d65c495402b6' for connections to the rem
ote server.
Info: Adding MSDeploy.webServer (MSDeploy.webServer).
Info: Adding webServer (MSDeploy.webServer/webServer).
Info: Adding appHostConfig ().
Error: (8/24/2015 10:28:43 PM) An error occurred when the request was processed on the remote computer.
Error: The ApplicationHost.config file is invalid. Cannot proceed with synchronization.
Error count: 1.

更多信息

事件的顺序是:

目标系统记录一个错误事件:

Microsoft-Windows-IIS-APPHOSTSVC -- message 9000

然后源系统上的 msdeploy 抛出(并且 msdeploy 退出):

Error: (8/25/2015 4:36:50 PM) An error occurred when the request was processed on the remote computer.
Error: The ApplicationHost.config file is invalid. Cannot proceed with synchronization.
Error count: 1.

更新:最初我在目标系统上收到两个事件日志错误。消息 9000 和 9012。我能够通过扩展 applicationhost.config 文件来修复 9012。但是工作了好几个小时,还没有针对 9000 错误的解决方案。

我检查了 ApplicationHost.config,并将其与基线进行了比较,那里似乎真的没有什么特别之处。

解决途径是什么?

答案是 msdeploy 似乎确实存在问题,但似乎没有人理解(或记录)原因。该工具主要用于从 IIS 6.x (Win 2003) 到较新的 IIS。

根据我们的经验,当从 IIS 7.x 转到 8.x 时,您通常不能将 msdeploy 与 "source:webserver" 方法一起使用。但是,msdeploy 可以为您做很多提升,从 7.x 到 8.x。

以下是我见过的一些有效步骤:

首先,做三步。这将使 msdeploy 尽可能多地移动(如果它可以移动更多就更好了,但这是我所看到的工作):

msdeploy -verbose -verb:sync -source:apphostconfig="WEB SITE NAME",computername=SOURCEMACHINE -dest:apphostconfig="WEB SITE NAME",computername=DESTINATIONMACHINE,userName="administrator",password="password-here"  -enableLink:AppPoolExtension

注意 "enablelink" 标志。

重复以上操作:

  • -enableLink:CertificateExtension 然后
  • -enableLink:FrameworkConf

完成后,msdeploy 已尽其所能。您现在应该已迁移站点,包括内容和应用程序池、ssl 证书以及与站点和应用程序池相关的配置。

对于 mime 映射和其他 IIS 系统范围的设置(压缩是一个例子),您自己做主。

不要问我为什么没有关于如何做到这一点的文档。 (不要问我为什么 msdeploy 不能只做整个该死的服务器。它在 IIS 6 上工作得很好,但在 IIS 7 上却不行,这是什么样的疯狂?无论如何,请向 Satya 发送一封有关它的电子邮件。)