Azure DevOps 2020 - GraphClient
Я не могу найти простой способ связаться с командой Microsoft AzureDevops. Я работаю над некоторыми инструментами, которые работают с Azure 2019, и прямо сейчас есть Azure 2020 RC. Microsoft исключила SOAP API в 2019 году. А также в 2020 году для REST Client. У тебя в 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-preview и 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, Object userState, 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 активен.
1 ответ
Да, в настоящее время api графа недоступен для Azure DevOps Server 2019 и Server 2020.
Вы можете добавить свой запрос на эту функцию на нашем сайте UserVoice, который является нашим основным форумом для предложений продуктов. После того, как предложение подано, вы можете проголосовать и добавить свои комментарии к этому отзыву. Команда продукта предоставит обновления, если они их просмотрят.
В качестве альтернативы вы можете попробовать использовать azure cli. С помощью расширения Azure DevOps для интерфейса командной строки Azure (CLI) вы можете управлять многими службами Azure DevOps из командной строки.
Интерфейс командной строки (CLI) Azure DevOps доступен для Azure DevOps Server 2020 и Azure DevOps Services.
О том, как начать работу с Azure DevOps CLI, см. В этом документе.