我正在将我的一台 IIS 6 Web 服务器(上面有 30 多个应用程序)迁移到新硬件。由于我有 Linux 背景,因此我对这看起来有多难感到非常惊讶。
在使用 msdeploy 尝试之后,我想出了这个命令,它应该可以工作(顺便说一句,替换是将所有内容移动到 C 盘,因为新服务器没有 D 分区):
C:\Program Files\IIS\Microsoft Web Deploy V2>msdeploy -verb:sync -source:webServer60,computerName=<IP>,userName=<USER>,password=<PASS> -replace:objectName=metaproperty,match="D:\\",replace="C:\\" -dest:webServer60 -enableLink:AppPoolExtension -whatif > msdeploy.log
但是我收到这个错误:
Error: The AppPoolNotFound dependency check found the AppPool '.Net 2' to be in use by the source data but not defined in source data or on the destination computer. Applications referencing this application pool will have configuration issues.
错误:同步被“DependencyCheckFailOnError”规则停止,因为在“错误”级别触发了一个或多个依赖性检查。错误数:1。
IIS 论坛上的“热心”人士似乎只为极小的用户提供服务,他们给出了解决方法“只需在目标计算机上创建应用程序池”。对于我现有的应用程序池数量乘以场中的服务器数量,这实际上并不实用。肯定有更简单的方法。
答案1
抱歉,我发现源服务器上的 MetaBase 中有一个“.Net 2”应用程序池的随机恶意条目,但该条目并不存在。删除该条目后,命令即可生效。