Расположение ресурса 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

Я думаю, что это должно быть без коллекции по умолчанию, поэтому в вашем примере

http://khanamar3:8080/tfs/

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

Другие вопросы по тегам