Расположение ресурса API не зарегистрировано
Я могу создать проект / удалить / переименовать все, но когда дело доходит до получения группы, он говорит: "Расположение ресурса API ebbe6af8-0b91-4c13-8cf1-777c14858188 не зарегистрировано на http://khanamar3:8080/tfs/DefaultCollection/" пожалуйста помоги.....
public PagedGraphGroups GetAllGroups()
{
VssConnection connection = Context.Connection;
GraphHttpClient graphClient = connection.GetClient<GraphHttpClient>();
//error coming in next line...
PagedGraphGroups groups = graphClient.GetGroupsAsync().Result;
foreach (var group in groups.GraphGroups)
{
LogGroup(group);
}
return groups;
}
3 ответа
Может быть две проблемы с
Местоположение ресурса API {0} не зарегистрировано на {1}
1. С URL
Я думаю, что это должно быть без коллекции по умолчанию, поэтому в вашем примере
2. С версией TFS/API (у меня была такая проблема)
2.1
Сначала проверьте версию вашего TFS-сервера, например, в TFS Management.
C:\Program Files\Microsoft Team Foundation Server 2018\Tools\TfsMgmt.exe
Как только вы узнаете версию своего сервера TFS, вы сможете увидеть, какую версию API он поддерживает.
https://docs.microsoft.com/en-us/rest/api/azure/devops/?view=vsts-rest-tfs-4.1
Например, TFS 2018 UPDATE 1 поддерживает версию API 4.0.
2.2
Затем проверьте, какая версия API вызывается используемыми библиотеками DLL. Я не могу найти эту информацию на сайте nuget https://www.nuget.org/packages/Microsoft.TeamFoundationServer.Client/
ОБНОВЛЕНИЕ: вы можете проверить, какая версия dll поддерживает какую версию TFS здесь: https://docs.microsoft.com/en-us/azure/devops/integrate/concepts/dotnet-client-libraries?view=azure-devops
а как описано здесь Как указать версию API? вы можете проверить, какая версия API передается методом с помощью ILSpy
Метод в вашем случае будет:
GetGroupsAsync
И вы можете проверить это с помощью https://marketplace.visualstudio.com/items?itemName=SharpDevelopTeam.ILSpy.
В моем случае это выглядело так
Итак, API из nuget с версией 16.153.0 использует вызовы с 5.1.1
Итак, в моем случае TFS 2018 UPDATE 1 не поддерживал версию API 5.1.1, поэтому мне нужно будет понизить версию nuget или обновить версию сервера TFS (или и то, и другое)
При использовании Azure DevOps Server или TFS on prem эта ошибка также может возникать, если вы используете базовый URL-адрес (в вашем случае http://khanamar3:8080/tfs/) при аутентификации, но позже пытаетесь использовать это подключение для отправки запроса на что-то, что находится внутри коллекции проектов, например «GetProjects()» или «GetWorkitemTypes (projectName)».
Чтобы добавить путаницы, некоторые функции работают при аутентификации с использованием базового URL-адреса, такого как «GetProjectCollections()». Итак, если вы сделали это, как я, и прошли аутентификацию с помощью базового URL-адреса и смогли получить коллекции проектов, а затем получили ошибку OP при попытке получить проекты в одной из этих коллекций, вы можете почесать голову для несколько часов.
Если вы прошли аутентификацию с использованием URL-адреса коллекции проектов (http://khanamar3:8080/tfs/DefaultCollection), то вызов таких функций, как «GetProjects()» и «GetWorkItemTypes()», работает, а «GetProjectCollections()» — нет.
Вы можете использовать IIdentityManagementService с ListApplicationGroups, чтобы получить список групп приложений.
TeamFoundationIdentity[] ListApplicationGroups(
string scopeId,
ReadIdentityOptions readOptions
)
Образец кода
var applicationGroups = identityManagementService.ListApplicationGroups(projectcollection.Uri.AbsoluteUri, ReadIdentityOptions.None);
Также взгляните на этот похожий вопрос: TFS 2013 получить все группы TFS, включая группу Windows