我已经使用 TeamCity 和 MSBuild 建立了一个持续集成构建。我正在使用 MSBuild 扩展包,主要用于它的 IIS7AppPool 任务。我的目标是在构建脚本执行部署步骤之前停止 IIS 应用程序池,然后启动应用程序池。IIS 应用程序池与生成代理位于不同的服务器上。
我使用以下 MS Build 代码来停止 IIS:
<MSBuild.ExtensionPack.Web.Iis7AppPool TaskAction="Stop" MachineName="$(DeploymentServerName)" Name="$(WebAppPoolName)" Username="$(DeploymentServerUsername)" UserPassword="$(DeploymentServerUserPassword)" />
我在 Web 服务器上设置了一个本地管理员用户帐户,并在上面使用其用户名和密码作为 $(DeploymentServerUsername) 和 $(DeploymentServerPassword)。
我收到的错误是:
[MSBuild.ExtensionPack.Web.Iis7AppPool] E:\TeamCity\BuildAgent\work\1a1dc058c29f0f12\BuildAndDeployment\Build_DevCI.proj(153, 5): UnauthorizedAccessException: Retrieving the COM class factory for remote component with CLSID {2B72133B-3F5B-4602-由于以下错误,来自机器 DEPLOYMENTSERVERMACHINENAME 的 8952-803546CE3344} 失败:80070005 DEPLOYMENTSERVERMACHINENAME。
我已经要求我们的网络人员关闭两台机器之间的所有防火墙,但我仍然遇到同样的错误。
任何人都可以看到我的语法有什么问题,或者就如何让它发挥作用提供任何建议吗?
我可以完成在我的本地机器上停止 IIS 应用程序池的任务,所以我的语法应该是正确的。
我看过这篇文章,但我不认为这是同一个问题: