使用 MSDeploy 为包设置应用程序池

Posted

技术标签:

【中文标题】使用 MSDeploy 为包设置应用程序池【英文标题】:Set Application Pool for package using MSDeploy 【发布时间】:2011-04-30 17:46:34 【问题描述】:

我正在使用 MSDeploy 部署网站,因此使用类似于以下代码的内容。

"%ProgramFiles%\IIS\Microsoft Web Deploy\msdeploy.exe" 
     -verb:sync
     -source:package=WebAppServer.zip 
     -dest:Auto 
     -setParamFile="was_params.xml" 
     -verbose 
          >  webappserversync.log

有没有设置应用程序池?我想从命令行执行此操作,而不是在清单或类似内容中设置它。

应该没关系,但这是在 IIS7 中。

【问题讨论】:

【参考方案1】:

当你生成你的包时,你需要在 parameters.xml 文件中有一个条目来设置应用程序池。部署时,您可以在 setParameters.xml 文件中包含该值的值,或者在命令行中使用 -setParam。

这是我用来抓取网站的命令,它生成了正确的 parameters.xml 文件...

msdeploy.exe 
  -verb:sync -source:appHostConfig="Default Web Site" 
  -enableLink:AppPoolExtension 
  -dest:package=site.zip 
  -declareParam:name="Application Pool",
       defaultValue="Default Web Site",
       description="Application pool for this site",
       kind=DeploymentObjectAttribute,
       scope=appHostConfig,
       match="application/@applicationPool"

要从命令行安装这个站点,这个...

msdeploy.exe 
    -verb:sync 
    -dest:appHostConfig="MagicSite" 
    -enableLink:AppPoolExtension 
    -source:package=site.zip 
    -setParam:"Application Pool"="MagicPool"

在parameters.xml 文件中挖掘以查看必要的条目。如果您愿意,-setParam 条目可以存在于您的 params.xml 文件中。

【讨论】:

如果我能让它工作,我就炸了。编写应用程序池的脚本就好了,但是在我调用 msdeploy 时设置该参数似乎没有任何区别。 我在尝试此操作时似乎收到以下错误:Error: Source (sitemanifest) and destination (appHostConfig) are not compatible for the given operation. 我知道了Error: Using a 64-bit source and a 32-bit destination with provider appHostConfig is not supported.【参考方案2】:

看看这个答案:

Set application pool with MSDeploy and TFS 2010

基本上,您使用 adsutil 脚本创建一个批处理文件来设置应用程序池,然后调用 MSDeploy 在目标计算机上运行该批处理文件。

【讨论】:

...创建应用程序池。但是如何为网站定位呢?

以上是关于使用 MSDeploy 为包设置应用程序池的主要内容,如果未能解决你的问题,请参考以下文章

Team Build:使用 MSDeploy 在本地发布

在Visual Studio 2012中使用MSBuild PublishProfile时,MSDeploy跳过规则

使用 msdeploy 转换文件

使用 msdeploy 将 SQLCMD 变量传递给 dbDacFx 提供程序

MsDeploy正在返回403禁止

MsDeploy 正在返回 403 禁止