创建后

时间:2016-04-12 13:30:42

标签: deployment tfs visual-studio-2015 tfs2015 build-definition

我们遇到了TFS 2015安装问题,从2010年开始升级。我们遇到了以下问题。这涉及干运行,因此我们将所有内容安装在同一台服务器上,这不是首选方法,我们知道。

•安装了Windows Server 2012 R2的新虚拟服务器

•添加了IIS功能

•已安装的SQL Server 2014

•在服务器上安装了sharepoint foundation 2013

•在服务器上安装了visual studio 2015

•安装了所有必需的.NET目标框架

•已安装必备软件,如MS Build tools 2015,Microsoft Visual Studio 2015代理

•将TFS2010备份还原到新的SQL Server

•已安装tfs 2015并在设置

中运行“升级”选项

•处理配置中的所有步骤,例如添加构建控制器和构建代理

•下载Vso代理并运行'ConfigureAgent.cmd'

•在TFS中配置代理池和队列

•添加了额外的团队项目集合。因此,我们从2010年开始收集了一系列旧版升级项目,以及一系列新的团队项目

•管理团队项目,团队成员等

•创建了XAML构建定义,在服务器上正确完成构建,执行测试

然而,

如果我尝试使用部署模板创建新的(非XAML)构建定义(请参阅图像)。 当我们想要选择“测试机器组/ Azure资源组”时,例如在选择测试位置时,会出现问题。选择列表为空。 因此,我们使用“管理”选项添加了计算机组,并且计算机组可用。但是,即使在刷新之后,包含机器组的下拉列表也会保持为空(参见图像)。

接下来,我们检查了他的问题的事件日志。刷新下拉列表时,会在事件日志中生成以下条目:

第一:

- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
  <Provider Name="Microsoft-Team Foundation Server" Guid="{80761876-6844-47D5-8106-F8ED2AA8687B}" /> 
  <EventID>0</EventID> 
  <Version>3</Version> 
  <Level>2</Level> 
  <Task>1</Task> 
  <Opcode>10</Opcode> 
  <Keywords>0x8000000000000001</Keywords> 
  <TimeCreated SystemTime="2016-04-12T09:09:21.717163200Z" /> 
  <EventRecordID>59666</EventRecordID> 
  <Correlation ActivityID="{6AD40FD3-10BA-4A7E-B6D9-F6926072DAB4}" /> 
  <Execution ProcessID="3376" ThreadID="6484" /> 
  <Channel>Microsoft-Team Foundation Server/Debug</Channel> 
  <Computer>KTBSV021.KTB.local</Computer> 
  <Security UserID="S-1-5-21-2105344776-4230907741-261866850-3716" /> 
  </System>
- <UserData>
- <Info TraceId="{00000001-0001-0001-0000-000000000000}" xmlns="http://schemas.microsoft.com/TeamFoundation/2010/Framework">
  <Tracepoint>0</Tracepoint> 
  <ServiceHost>{87670F79-6386-4363-9960-73B634419263}</ServiceHost> 
  <ContextId>10085</ContextId> 
  <ProcessName>w3wp</ProcessName> 
  <Username>KTB\tmpadmin</Username> 
  <VSID>{9E83242F-9944-4CBD-AF10-EF2D449A03B1}</VSID> 
  <Service>Web-Api</Service> 
  <Method>TaskDefinitionWebApiProxy.QueryEndpoint</Method> 
  <Area>DistributedTask</Area> 
  <Layer>WebApiProxy</Layer> 
  <UserAgent>Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko</UserAgent> 
  <Uri>/tfs/Default/_apis/distributedtask/endpoint</Uri> 
  <Path /> 
  <UniqueIdentifier>{A9646429-41CB-4137-A39A-D4E29EDDC389}</UniqueIdentifier> 
  <UserDefined /> 
  <ExceptionType>System.Net.WebException</ExceptionType> 
  <Message>System.Net.WebException: The remote server returned an error: (401) Unauthorized. at System.Net.HttpWebRequest.GetResponse() at Microsoft.TeamFoundation.DistributedTask.Server.WebApiProxy.HttpRequestProxy.ExecuteRequest(HttpRequestMessage requestMessage, IList`1 sourceDefinitions, DataSource dataSource)</Message> 
  </Info>
  </UserData>
  </Event>

第二

- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
  <Provider Name="Microsoft-Team Foundation Server" Guid="{80761876-6844-47D5-8106-F8ED2AA8687B}" /> 
  <EventID>0</EventID> 
  <Version>3</Version> 
  <Level>2</Level> 
  <Task>1</Task> 
  <Opcode>10</Opcode> 
  <Keywords>0x8000000000000001</Keywords> 
  <TimeCreated SystemTime="2016-04-12T09:09:21.717163200Z" /> 
  <EventRecordID>59667</EventRecordID> 
  <Correlation ActivityID="{6AD40FD3-10BA-4A7E-B6D9-F6926072DAB4}" /> 
  <Execution ProcessID="3376" ThreadID="6484" /> 
  <Channel>Microsoft-Team Foundation Server/Debug</Channel> 
  <Computer>KTBSV021.KTB.local</Computer> 
  <Security UserID="S-1-5-21-2105344776-4230907741-261866850-3716" /> 
  </System>
- <UserData>
- <Info TraceId="{00000001-0001-0001-0000-000000000000}" xmlns="http://schemas.microsoft.com/TeamFoundation/2010/Framework">
  <Tracepoint>103200</Tracepoint> 
  <ServiceHost>{87670F79-6386-4363-9960-73B634419263}</ServiceHost> 
  <ContextId>10082</ContextId> 
  <ProcessName>w3wp</ProcessName> 
  <Username>KTB\tmpadmin</Username> 
  <VSID>{9E83242F-9944-4CBD-AF10-EF2D449A03B1}</VSID> 
  <Service>Web-Api</Service> 
  <Method>TaskDefinitionWebApiProxy.QueryEndpoint</Method> 
  <Area>DistributedTask</Area> 
  <Layer>TaskDefinitionWebApiProxy</Layer> 
  <UserAgent>Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko</UserAgent> 
  <Uri>/tfs/Default/_apis/distributedtask/endpoint</Uri> 
  <Path /> 
  <UniqueIdentifier>{A9646429-41CB-4137-A39A-D4E29EDDC389}</UniqueIdentifier> 
  <UserDefined /> 
  <ExceptionType>Microsoft.TeamFoundation.DistributedTask.WebApi.ServiceEndpointQueryFailedException</ExceptionType> 
  <Message>Microsoft.TeamFoundation.DistributedTask.WebApi.ServiceEndpointQueryFailedException: The remote server returned an error: (401) Unauthorized. at Microsoft.TeamFoundation.DistributedTask.Server.WebApiProxy.HttpRequestProxy.ExecuteRequest(HttpRequestMessage requestMessage, IList`1 sourceDefinitions, DataSource dataSource) at Microsoft.TeamFoundation.DistributedTask.Server.Controllers.TaskDefinitionWebApiProxyController.QueryEndpoint(TaskDefinitionEndpoint endpoint) at lambda_method(Closure , Object , Object[] ) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.<GetExecutor>b__9(Object instance, Object[] methodParameters) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__0.MoveNext()</Message> 
  </Info>
  </UserData>
  </Event>

Fiddler报告以下请求失败:

POST http://localhost:8080/tfs/Default/_apis/distributedtask/endpoint HTTP / 1.1

•服务器上已启用Powershell Remote。

•服务帐户已添加到代理池中的角色。

这显然是一个安全问题。我们忘记或做错了什么?

1 个答案:

答案 0 :(得分:0)

您的问题有点像this post。您可以尝试this case中的解决方案将TFS服务帐户添加到具有完全访问权限的C:\ ProgramData \ Microsoft \ Crypto \ RSA \ MachineKeys,以便服务可以访问所有证书。

但首先,尝试使用您应该作为团队项目集管理员或代理池管理员添加的帐户重新部署代理。