Azure DevOps 2020-GraphClient

问题描述

我找不到与Microsoft AzureDevops团队进行交流的简便方法。 我正在使用与Azure 2019一起使用的一些工具,现在也有Azure 2020 RC。 Microsoft已弃用SOAP API(2019年)和REST Client(2020年)。 您在2019年的REST客户端未完全提供。 GraphClient:https://docs.microsoft.com/en-us/rest/api/azure/devops/graph/?view=azure-devops-rest-6.0在那里丢失。这意味着,没有办法获取Usergraph和Users,而是通过旧的SOAP API。

尽管我可能会更改Azure 2020,但实际上不会更改。

我正在使用Microsoft.VisualStudio.Services.Client的最新预览版和最新的稳定版本。分别是:16.173.0预览版和16.153.0。手动调用它来发出REST请求也无济于事。

我的测试代码

var uriToServer = new Uri("http://localhost:81/DefaultCollection");
var vssBasicCredential = new VssCredentials(new WindowsCredential(new NetworkCredential("test","test")));
using var vssConnection = new VssConnection(uriToServer,vssBasicCredential);
using var graphHttpClient = vssConnection.GetClient<GraphHttpClient>();
var listUsersAsync = await graphHttpClient.ListUsersAsync();

我们得到:

handled Exception: System.AggregateException: One or more errors occurred. (API resource location 005e26ec-6b77-4e4f-a986-b3827bf241f5 is not registered on http://localhost:81/DefaultCollection.) ---> 
Microsoft.VisualStudio.Services.WebApi.VssResourceNotFoundException: API resource location 005e26ec-6b77-4e4f-a986-b3827bf241f5 is not registered on http://localhost:81/DefaultCollection.
at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.CreateRequestMessageAsync(HttpMethod method,IEnumerable`1 additionalHeaders,Guid locationId,Object routeValues,ApiResourceVersion version,HttpContent content,IEnumerable`1 queryParameters,Object userState,CancellationToken cancellationToken,String mediaType)
at Microsoft.VisualStudio.Services.Graph.Client.GraphHttpClient.ListUsersAsync(IEnumerable`1 subjectTypes,String continuationToken,CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
at ConsoleApp1.Program.Main(String[] args) in C:\Users\user\RiderProjects\ConsoleApp1\ConsoleApp1\Program.cs:line 17

与2019年相同的问题。当然其他客户也能正常工作。

相同的代码非常适合Azure DevOps Cloud-只需将VssCredentials更改为VssBasicCredentials。如果SSL处于活动状态,我知道您可以为服务器工作。

解决方法

是的,当前的图形API不适用于Azure DevOps Server 2019和Server 2020。

enter image description here

您可以在我们的UserVoice网站上添加对此功能的请求,该网站是我们提供产品建议的主要论坛。提出建议后,您可以对此反馈进行投票并添加评论。如果产品小组查看了更新,则会提供更新。

或者,您可以尝试使用azure cli。借助用于Azure命令行界面(CLI)的Azure DevOps扩展,您可以从命令行管理许多Azure DevOps服务。

可用于Azure的Azure DevOps命令行界面(CLI) DevOps Server 2020 和Azure DevOps Services。

关于Azure DevOps CLI入门,请参考此document