【问题标题】:Access Denied when try to use Web deploy尝试使用 Web 部署时拒绝访问
【发布时间】:2013-05-05 10:51:11
【问题描述】:

我一直在关注Standard Environments for Automated Deployment and Testing,但遇到了一些错误。

我有两台服务器,一台是 Windows Server 2008 R2,另一台是 Windows Server 2012。在这两台机器上我都安装了Web Deploy 3 并且服务Web Deployment Agent Service 正在两台机器上运行。我在我的域中有服务帐户,并将两台机器上的帐户添加到管理员组。我还将此帐户用于构建和测试控制器和代理。

2008服务器是构建服务器,我想用构建服务器部署一个网站到2012服务器。我有一个构建定义,它使用标准 TFS 2012 Update 2 流程模板(添加 /p:DeployOnBuild=True 作为 MS 构建参数)使用 zip 和 deploy.cmd 等制作包。

我有另一个基于 LabDefaultTemplate TFS 2012 更新 2 模板的构建定义。在实验室流程模板中,我在部署选项卡上添加了以下命令:

"$(BuildLocation)\_PublishedWebsites\UI.Web.Mvc4_Package\UI.Web.Mvc4.deploy.cmd" /y /m:SERVERNAME_OF_THE_2012_SERVER

当我运行第二个构建定义时,我收到“拒绝访问”错误。我不知道它是从哪里来的。我没有看到这里发生任何特别的事情。我还将日志设置为诊断,但这不起作用。

当我将远程桌面连接到 2008 构建服务器并手动运行相同的 deploy.cmd 时,一切正常。站点部署在 2012 服务器上,一切都在运行。

有人可以帮我吗?

谢谢

从构建中添加日志:

Deploy Build on Environment

00:22
Deploying Build

00:22
Run Deployment scripts
Initial Property Values
Values = Web Server | $(BuildLocation)\_PublishedWebsites\UI.Web.Mvc4_Package\start.bat

00:22
Run Deployment Task
Initial Property Values
BuildLocation = \\AP-GDA06-TFSB\DropFolder\Dev MVC4\Dev MVC4_20130510.11
DeploymentScriptDetails = Web Server | $(BuildLocation)\_PublishedWebsites\UI.Web.Mvc4_Package\start.bat
LabEnvironmentUri = vstfs:///LabManagement/LabEnvironment/3
MaxWaitTime = 00:30:00
ThrowOnError = True
UseRoleForDeployment = True
Deployment Task Logs for Machine: 2012_SERVER
 Access is denied
 Exception Message: Team Foundation Server could not complete the deployment task for machine '2012_SERVER', script '\\2008_SERVER\DropFolder\Dev MVC4\Dev MVC4_20130510.11\_PublishedWebsites\UI.Web.Mvc4_Package\start.bat' and arguments ''. (type LabDeploymentProcessException)
Exception Stack Trace: 
Server stack trace: 
   at Microsoft.TeamFoundation.Lab.Workflow.Activities.RunDeploymentTask.ExecuteDeploymentTask.RunCommand(AsyncState state)
   at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)
   at System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(IMessage msg, IMessageSink replySink)

Exception rethrown at [0]: 
   at System.Runtime.Remoting.Proxies.RealProxy.EndInvokeHelper(Message reqMsg, Boolean bProxyCase)
   at System.Runtime.Remoting.Proxies.RemotingProxy.Invoke(Object NotUsed, MessageData& msgData)
   at System.Action`1.EndInvoke(IAsyncResult result)
   at Microsoft.TeamFoundation.Lab.Workflow.Activities.RunDeploymentTask.ExecuteDeploymentTask.EndExecute(AsyncCodeActivityContext context, IAsyncResult result)
   at System.Activities.AsyncCodeActivity.CompleteAsyncCodeActivityData.CompleteAsyncCodeActivityWorkItem.Execute(ActivityExecutor executor, BookmarkManager bookmarkManager)
Final Property Values
BuildLocation = \\2008_SERVER\DropFolder\Dev MVC4\Dev MVC4_20130510.11
DeploymentScriptDetails = Web Server | $(BuildLocation)\_PublishedWebsites\UI.Web.Mvc4_Package\start.bat
LabEnvironmentUri = vstfs:///LabManagement/LabEnvironment/3
MaxWaitTime = 00:30:00
ThrowOnError = True
UseRoleForDeployment = True
Final Property Values
Values = Web Server | $(BuildLocation)\_PublishedWebsites\UI.Web.Mvc4_Package\start.bat

启动的 BAT 文件包含以下命令:

START UI.Web.Mvc4.deploy.cmd /y /m:2012_SERVER

【问题讨论】:

  • 你能提供更多的错误信息吗?您应该能够打开构建并“查看日志”以查看究竟发生了什么以及发生在哪里......您可能需要将构建过程中的“记录详细程度”更改为“诊断”并再次运行它。
  • 哦,您是在本地服务器上运行还是在tfs.visualstudio.com 上运行?
  • 我在本地运行 TFS 2012 和构建服务器。所以这里没有云。我添加了引发错误的日志部分。
  • 日志处于诊断模式
  • 我有点远。我在构建服务器的 DropFolder 上拥有组“Everyone”权限,脚本执行得很好。现在我需要知道我需要授予哪个帐户而不是每个人的权限...

标签: tfs msbuild web-deployment webdeploy


【解决方案1】:

检查这个答案:https://stackoverflow.com/a/16566204/648297

这就是我的解决方案。

这也可能对你有用:What is Lab Service Account?

【讨论】:

  • 我填写了实验室服务账号。我从部署服务器中卸载了 TFS 2012 代理。我还从实验室管理中删除了服务器。我重新启动了测试控制器。再次使用该实验室服务帐户在实验室管理中添加要部署到的服务器。代理再次安装但没有运气。当我在 dropfolder 上添加用户“domain\ComputerNameToDeploy$”时,只有读取权限,一切正常,所以它与用户有关
  • 当我转到我在实验室管理中配置的服务器并启动测试代理配置工具时,我看到配置了实验室服务帐户。当我转到服务时,我看到 Visual Studio Lab Agent Service 和 Visual Studio Network Agent Service 在“本地系统”下运行。这不应该也是实验室服务帐号吗???
  • 我刚刚创建了一个进一步的答案,因为 cmets 的长度有限并且不允许正确格式化...
  • Visual Studio 实验室代理服务和 Visual Studio 网络代理服务不应在实验室服务下运行,“本地系统”很好。
【解决方案2】:

如果您开始使用 DefaultLabTemplate 的构建定义,您应该在构建日志中看到以下内容:

...

If deployment needed
 Do deployment
  Reserve Environment For Deployment
  Deploy Build on Environment
    Deploying Build
      Run Deployment scripts
        Run Deployment Task
          Deployment Task Logs for Machine: <your machine> 
            Accessing the following location using the lab service account: <your service account>, <your drop location>.

...

您是否看到实验室服务帐户正在使用?

【讨论】:

  • 我问这个是因为如果您定义实验室服务帐户,它不适用于现有实验室环境,您必须更新它们,请参阅msdn.microsoft.com/en-us/library/ee712736.aspx
  • 我看到“”行,机器是对的。那是它应该部署到的服务器。我没有看到“使用实验室服务帐户访问以下位置”行。所以我导航到您的网址,但 TFSLabConfig 命令工具无法识别任何“UpdateServiceAccountOnDeployedEnvironments”命令。我应该查看 team Foundation server 11 文件夹而不是 2010 文件夹,对吗?我们正在使用 TFS 2012 更新 2。
  • Elena,你有什么地方可以找到 TFS 2012 中的 UpdateServiceAccountOnDeployedEnvironments 吗?谢谢
  • 客户端机器上的文件夹 C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE 应该是正确的。看起来 MSDN 文章是不正确的......。
  • 本文末尾描述了更新现有环境的另一种可能性:msdn.microsoft.com/en-us/library/dd692846.aspx我正在使用 SCVMM 环境,因此我只需在配置测试后将我的环境重置为其初始快照用于使用实验室服务帐户的控制器。但是由于您使用的是标准环境并且它们不支持快照,我想最简单的方法是重新创建您的环境。
【解决方案3】:

在单向信任或隔离/工作组网络配置上使用 Visual Studio 2012 Update 4 和 Team Foundation Server,我们发现需要额外的步骤。通过 Build-Deploy-Test 工作流程(但不是 Web Deploy)运行自动化单元测试时,我们发现设置 lab 服务帐户 只是解决方案的一部分。为了避免构建中出现Access is denied错误,我们还必须为 Visual Studio Lab Agent Service 设置用户。

这是设置实验室服务帐户后服务小程序中的服务的样子(在本例中为“.\LabAdmin”):

Visual Studio 实验室代理服务 |配置、监控... |跑步 |自动 | 本地系统 Visual Studio Lab 网络代理服务 |设置网络属性... |跑步 |自动 |本地系统 Visual Studio 测试代理 |提供分布式... |跑步 |自动 | .\LabAdmin

为了修复访问被拒绝错误,我们还必须在实验室服务帐户下运行 Visual Studio 实验室代理服务:

Visual Studio 实验室代理服务 |配置、监控... |跑步 |自动 | .\LabAdmin Visual Studio Lab 网络代理服务 |设置网络属性... |跑步 |自动 |本地系统 Visual Studio 测试代理 |提供分布式... |跑步 |自动 | .\LabAdmin

进行此更改并重新启动服务后,拒绝访问错误消失了。这在两台不同的目标计算机上重复,至少在我们的配置中,这似乎是必要的步骤。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-05
    • 2020-10-26
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 2020-06-30
    • 1970-01-01
    相关资源
    最近更新 更多