【问题标题】:MSDeploy from IIS7 to IIS6MSDeploy 从 IIS7 到 IIS6
【发布时间】:2015-02-19 15:46:25
【问题描述】:

我正在尝试使用以下命令进行 MSDeploy:

"C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\\msdeploy.exe" -source:package='package.zip' -dest:auto,computerName='servername',includeAcls='False' -verb:sync -disableLink:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtension -setParamFile:"package.SetParameters.xml" 

它将部署到的服务器是运行 IIS 6 的 Win2003 服务器。当我从 WinXP Hudson CI 从站运行此命令时,它工作得很好。但是,在新的 Win7 从站上运行它会给我以下错误:

Error: (12/21/2014 12:59:17 AM) An error occurred when the request was processed on the remote computer.
Error: The metabase key '/LM/W3SVC' could not be found.
Error: The type initializer for 'Microsoft.Web.Deployment.AxNative' threw an exception. ---> System.IO.IOException: The specified module could not be found. (Exception from HRESULT: 0x8007007E)
   --- End of inner exception stack trace --- 
   at Microsoft.Web.Deployment.AxNative.MetabaseGetBaseObject(String serverName, String userName, String password, IAppHostWritableAdminManager manager, Object& objectHandle)
   at Microsoft.Web.Deployment.MetaKeyCommitItem..ctor(DeploymentBaseContext baseContext, Boolean useInternalAbo, Boolean isReadOnly)
   at Microsoft.Web.Deployment.MetaKeyCommitItem.GetInstance(DeploymentBaseContext baseContext, Boolean useInternalAbo, Boolean isReadOnly)
   at Microsoft.Web.Deployment.MetaKeyProvider.get_CommitItem()
   at Microsoft.Web.Deployment.MetaKeyProvider.DoesNodeExist(Exception& e)
Error: The library 'C:\Program Files\IIS\Microsoft Web Deploy\x86\axnative.dll' could not be loaded.
Error: The specified module could not be found. (Exception from HRESULT: 0x8007007E)
Error count: 1.

有什么想法吗?如果需要更多信息,请告诉我。

【问题讨论】:

    标签: iis iis-7.5 iis-6 hudson msdeploy


    【解决方案1】:

    错误:“找不到元数据库键 '/LM/W3SVC'。”听起来好像在 Windows 7 (iis7) 目标上使用了错误的提供程序,因为 IIS7 不再使用元数据库。 IIS7 及以上使用配置模型。

    这是how to migrate a site from IIS6 to IIS7 上的链接,它显示了使用来自 IIS6 服务器的包并将其导入到 IIS7 服务器的示例。

    我在您的示例中看到的唯一区别是他们在目标上指定了元密钥提供程序,而您使用的是“自动”。自动可能适用于 IIS6 到 IIS6,但您可能需要指定元密钥提供程序(用于 IIS6 站点或 IIS6 到 IIS7 迁移)作为目标提供程序。

    创建包示例

    msdeploy -verb:sync  -source:metakey=lm/w3svc/<<YourSiteIDHere>> -dest:package=c:\Site1.zip > WebDeployPackage.log
    

    部署到 IIS7 目标示例

    msdeploy -verb:sync -source:package=c:\Site1.zip -dest:metakey=lm/w3svc/<<YourSiteIDHere>> > WebDeploySync.log
    

    如果您正在执行 IIS7 到 IIS7 的迁移,您可能希望改用 AppHostConfig 提供程序。但是metakKey 提供程序是 Microsoft 为 IIS6 到 IIS6 或 IIS6 到 IIS7 指定的。

    【讨论】:

    • 我没有将它部署到 IIS7。正在从 IIS7 服务器部署到 IIS 6 服务器。不过,感谢您的回答 - 我已经设法解决了这个问题(我会发布错误的答案并关闭这个问题)。
    【解决方案2】:

    问题在于运行 IIS6 的目标 win2003 服务器上的 MS Deploy 安装(HKLM\SOFTWARE\Microsoft\IIS Extensions\Web Deploy 应该有一个用于 web 部署 2.0 的“2”文件夹,而不是一个“1”文件夹) 。

    我刚刚修复(重新安装)MS Deploy 2.0,它解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 2011-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多