【问题标题】:Set application pool with MSDeploy and TFS 2010使用 MSDeploy 和 TFS 2010 设置应用程序池
【发布时间】:2011-05-26 14:36:53
【问题描述】:

我正在尝试使用 MSDeploy 部署网站并使用其中的一些进行团队构建...

/p:DeployOnBuild
/p:DeployTarget=MsDeployPublish
/p:CreatePackageOnPublish=True
/p:MSDeployPublishMethod=InProc
/p:MSDeployServiceURL=localhost
/p:DeployIISAppPath="Default Web Site"

有没有办法在自定义应用程序池中设置这个网站?

【问题讨论】:

    标签: iis msdeploy tfsbuild


    【解决方案1】:

    如果您使用的是 IIS 7,则可以使用 appPoolProvider 将应用程序池同步到远程服务器。见:

    http://technet.microsoft.com/en-us/library/dd569070(WS.10).aspx

    http://blog.torresdal.net/2010/08/16/NoClickWebDeploymentPart2WebDeployAkaMsdeploy.aspx

    但是,我无法真正让它正常工作,如果您使用的是 IIS 6,这无论如何都不会工作。您可以做的是利用 MSDeploy 在远程服务器上运行几个命令来设置应用程序池(并在网站上注册 .NET 版本)。

    首先,创建一个包含类似于以下内容的批处理文件:

    cscript //nologo C:\Inetpub\AdminScripts\adsutil.vbs 
      SET w3svc/<IIS number>/Root/<virtual directory>/AppPoolid "<app pool name>"
    

    因此,如果 IIS 编号为 1,则您的虚拟目录为“MyDirectory”且应用程序池名为“.NET4.0”,则命令为。

    cscript //nologo C:\Inetpub\AdminScripts\adsutil.vbs 
      SET w3svc/1/Root/MyDirectory/AppPoolid ".NET4.0"
    

    然后您可以运行 MSDeploy,将此批处理文件作为参数传入并在远程计算机上运行:

    MSDeploy 
      -verb:sync 
      -source:runCommand="<path to batch file>",waitinterval=5000 
      -dest:auto,computername=<computer name>
    

    其中&lt;path to batch file&gt; 是您刚刚在上面创建的批处理文件的完整路径,并且是您要运行它的计算机。这是描述runCommand 参数的链接:http://technet.microsoft.com/en-us/library/ee619740(WS.10).aspx

    我相信您可以将其设置为 TFS 中的构建步骤。我们制作了一个小的 .NET 实用程序,我们将其作为部署过程的一部分来创建这些批处理文件并运行 MSDeploy 命令。

    您还可以使用相同的方法执行其他可能对您有用的事情:
    注册 IIS 版本:

    %windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe 
      -s w3svc/1/root/MyDirectory  
    

    创建应用程序池:

    CSCRIPT //nologo %dir%\adsutil.vbs 
      CREATE w3svc/AppPools/AppPoolName IISApplicationPool  
    

    感谢http://justsamson.com/2010/06/14/create-virtual-directory-in-iis-6-0-via-command-line/ 提供命令行脚本来执行各种功能。

    【讨论】:

    • 实际上并没有回答如何将网站设置到应用程序池中的问题(一旦你创建了它)
    • @piers7 也许你错过了这篇文章的前半部分,它准确地展示了如何设置应用程序池?我还添加了注册 IIS 版本和创建应用程序池的命令,因为我发现这些命令很有用。
    【解决方案2】:

    部分诀窍在于/p:IncludeAppPool=true。这会更改部署脚本以启用 AppPoolExtension。但我还没有弄清楚如何最好地实际设置应用程序池。 :)

    【讨论】:

      猜你喜欢
      • 2011-04-30
      • 2012-11-15
      • 2013-04-04
      • 1970-01-01
      • 2013-08-02
      • 1970-01-01
      • 2016-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多