Azure DevOps 2020 - GraphClient

Azure DevOps 2020 - GraphClient

我找不到与 Microsoft AzureDevops 团队沟通的简单方法。 我正在开发一些可与 Azure 2019 配合使用的工具,现在还有 Azure 2020 RC。 Microsoft 在 2019 年弃用了 SOAP API。对于 REST 客户端,在 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-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 处于活动状态,我知道的 Thou Basic 可以用于服务器。

是的,目前图表 api 不适用于 Azure DevOps Server 2019 和 Server 2020。

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

作为替代方案,您可以尝试使用 azure cli。通过 Azure 命令行界面 (CLI) 的 Azure DevOps 扩展,您可以从命令行管理许多 Azure DevOps 服务。

The Azure DevOps Command Line Interface (CLI) is available for Azure DevOps Server 2020 and Azure DevOps Services.

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