更新:
要回答最近的评论......我发现了以下信息,但它没有用。
这将在管理委派UI下设置其他选项,以允许非管理员帐户部署到您的应用程序。它适用于一台服务器,但不适用于另一台我没时间试图让这个工作。我的另一个解决方案就是这样做:
两种解决方案都有效,但我更喜欢前者。有一天,我会弄清楚两台服务器之间的差异并发布另一次更新。
进行三天的故障排除 - 我被正式难倒了。
来自TFS构建日志的错误详细信息
MSDeployPublish:
启动Web部署将应用程序/包发布到https://XX.XX.XX.XX:8172/msdeploy.axd?site=Default%20Web%20Site ...
从源:包(D:\ Builds \ Sources \ ProjectA.zip)启动Web部署任务到目标:auto()。
更新setAcl(默认网站/测试)。
C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.targets(3847,5):错误:Web部署任务失败。((2/19 / 2013 9:58:23 AM)在远程计算机上处理请求时发生错误。)[D:\ Builds \ Sources \ ProjectA.csproj]
C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.targets(3847,5):错误:[D:\ Builds \ Sources \ ProjectA.csproj ]
C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.targets(3847,5):错误:(2/19/2013 9:58:23 AM)在远程计算机上处理请求时发生错误。 [d:\构建\源头\ ProjectA.csproj]
C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.targets(3847,5):错误:服务器遇到处理请求的问题。请联系服务器管理员以获取更多信息[d:\构建\源头\ ProjectAcsproj]
发布无法部署。
完成构建项目“D:\ Builds \ Sources \ ProjectA.csproj”(默认目标) - 失败。 完成构建项目“D:\ Builds \ Sources \ ProjectWeb.csproj”(默认目标) - 失败。
构建失败。
我有三个环境。发展,质量保证和生产
开发和QA有一个非生产构建帐户。生产有一个生产构建帐户。
部署可在其中一个生产服务器以及所有开发和QA服务器上运行。但不是另一个。这些是托管不同Web应用程序的独立服务器。它不是负载平衡的,也不是Web场的一部分。
我认为这是一个权限问题,但此问题仅存在于其中一个服务器上。要使此部署正常运行,我必须以管理员身份在框中设置生产 tfs构建帐户。或者对Web应用程序文件夹中的每个人进行全面控制。两者都不是首选。更不用说其他服务器都没有这样设置。
在部署期间,我确实注意到在部署的第一步中ACL权限是错误的。 Web应用程序文件夹授予构建帐户特殊权限。在其他环境中,该权限永远不会被设置。我不知道为什么会这样。也许这是工作流程中的一个直接步骤,但我不确定。
所有功能委派选项均根据to this website进行设置。我知道他们是对的,因为我现在已经多次实施了。链接中未指定的内容是允许构建帐户使用功能规则。所有这些都是从应用程序设置到顶级站点。
如果我在TFS中切换QA版本以部署到生产版,则会因同样的问题而失败。所以它不是构建定义。如果我授予管理员或每个人权限,那么它就可以工作,因此它不是项目或配置。
MSBuild参数
/p:DeployOnBuild=True /p:DeployTarget=MsDeployPublish
/p:CreatePackageOnPublish=True /p:MSDeployPublishMethod=WMSVC
/p:MSDeployServiceUrl=https://XX.XX.XX.XX:8172/msdeploy.axd
/p:DeployIisAppPath="Default Web Site/Test"
/p:UserName=DOMAIN\ProdBuildAccount /p:Password=*******
/p:AllowUntrustedCertificate=True
在排队成功构建后,部署将从团队资源管理器中启动。
此外,如果我使用package.zip并将其手动导入IIS,那么ACL是正确的,并且部署完美。