从IIS7到IIS6的MSDeploy

时间:2014-12-21 07:30:40

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

我正在尝试使用以下命令执行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.

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

2 个答案:

答案 0 :(得分:0)

错误:“无法找到元数据库密钥'/ LM / W3SVC'。”听起来像是在Windows 7(iis7)目的地上使用了错误的提供程序,因为IIS7不再使用元数据库。 IIS7及更高版本使用配置模型。

以下是how to migrate a site from IIS6 to IIS7上的链接,其中显示了使用IIS6服务器中的程序包并将其导入IIS7服务器的示例。

我在您的示例中看到的唯一区别是,他们在目标上指定了一个metakey提供程序,而您正在使用“auto”。 Auto可能适用于IIS6到IIS6,但您可能需要将metaKey提供程序(用于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的指定。

答案 1 :(得分:0)

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

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