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