从构建脚本中停止IIS 7应用程序池

And*_*son 11 msbuild teamcity

如何从TeamCity中运行的MSBuild脚本停止然后重新启动IIS 7应用程序池.我想将我们的每晚构建部署到IIS服务器,供测试人员查看.

我试过像这样使用appcmd:

appcmd stop apppool /apppool.name:MYAPP-POOL
Run Code Online (Sandbox Code Playgroud)

...但是我遇到了Windows 2008中的高程问题,到目前为止我已经阻止我从TeamCity构建过程中运行该命令,因为Windows 2008需要提升才能运行appcmd.

如果我在将文件复制到Web服务器之前没有停止应用程序池,则MSBuild脚本无法将文件复制到服务器.

从TeamCity部署网站到IIS时,有没有其他人看到并解决了这个问题?

Ped*_*dro 7

的MSBuild社区任务包括,似乎你想要做什么(尽管如指出它是过时的,目前只支持IIS6)的一个例子的AppPoolController:

<AppPoolController ApplicationPoolName="MyAppPool" Action="Restart" />
Run Code Online (Sandbox Code Playgroud)

请注意,如有必要,您还可以提供用户名和密码.

编辑:刚刚注意到MSBuild扩展包有一个可能更合适的Iis7AppPool任务.


Nas*_*ser 7

文章描述了使用名为App_offline.htm一个HTM文件采取网站离线.一旦IIS在Web应用程序目录的根目录中检测到该文件,

ASP.NET 2.0将关闭应用程序,从服务器卸载应用程序域,并停止处理该应用程序的任何新传入请求.

在App_offline-htm中,您可以放置​​一条用户友好的消息,指示该站点当前处于维护状态.

Jason Lee展示了您需要使用的MSDeploy调用(以及有关在构建脚本中集成这些步骤的更多信息!).

MSDeploy 
-verb:sync 
-source:contentPath="[absolute_path]App_offline-Template.htm" 
-dest:contentPath="name_of_site/App_offline.htm",computerName="copmuter_name",
username=user_with_administrative priviliges,password=passwort
Run Code Online (Sandbox Code Playgroud)

部署后,您可以使用以下调用删除App_offline.htm文件:

MSDeploy 
-verb:delete 
-dest:contentPath="name_of_site/App_offline.htm",computerName="computer_name",
username=user_with_administrative_priviliges,password=passwort
Run Code Online (Sandbox Code Playgroud)


Cra*_*der 0

您可以尝试更改构建代理服务设置,以普通用户帐户而不是 SYSTEM(默认)身份登录,这可以通过服务控制面板(开始 | 运行 | services.msc)来完成。

如果没有帮助,您还可以尝试将 appcmd 配置为始终以提升的权限运行,有关详细信息,请参阅此文档。

如果此类选项对于 appcmd 不可用或仍然不起作用,您可以为此用户完全禁用 UAC。