Как успешно подключиться к хранилищу рабочих элементов TFS 2010?

Я пробовал два способа подключиться к workitemstore для нашего сервера TFS. Попытка A заключалась в подключении к серверу конфигурации и использовании метода GetService () . Это всегда возвращает ноль.

Попытка B заключалась в том, чтобы подключиться к TfsTeamProjectCollection и использовать метод GetService () или передать коллекцию проекта в конструктор WorkItemStore. При попытке B я получаю исключение: «Ошибка HRESULT E_FAIL была возвращена из вызова компонента COM.«Единственная информация, которую я могу найти, похоже, указывает на некоторые проблемы с разрешениями, но я подтвердил, что аутентифицирован как пользователь с доступом для чтения ко всей коллекции проектов, и я подключаюсь и вмешиваюсь соответствующим образом через предварительную версию VS 2011 dev.

Вот как я подключаюсь ...

    public TfsConfigurationServer GetConfigurationServer()
    {
        Uri tfsUri = new Uri(configs.TfsUri);
        TfsConfigurationServer server = TfsConfigurationServerFactory.GetConfigurationServer(tfsUri, credProvider);
        server.Authenticate();
        if (server.HasAuthenticated == false)
            throw new InvalidOperationException("You can't authenticate against the tfs instance.");
        return server;
    }

    public TfsTeamProjectCollection GetProjectCollectionInstance(string projectCollectionName)
    {
        Uri tfsUri = new Uri(configs.TfsUri + "/" + projectCollectionName);         
        TfsTeamProjectCollection collection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(tfsUri, credProvider);
        collection.Authenticate();
        if (collection.HasAuthenticated == false)
            throw new InvalidOperationException("You can't authenticate against the tfs instance.");
        return collection;
    }

и вот как я пытаюсь получить WorkItemStore (глупый код для иллюстрации проблемы) ...

    public WorkItemProvider()
    {
        if (workItems == null)
            workItems = ServerProvider.ServerInstance.GetService<WorkItemStore>();
        if (workItems == null)
            workItems = ServerProvider.ProjectCollectionInstance.GetService<WorkItemStore>();
        if (workItems == null)
            workItems = new WorkItemStore(ServerProvider.ProjectCollectionInstance);
        if (workItems == null)
            throw new NullReferenceException("Couldn't load work item store.");
    }

Я не нахожусь в том же домене, что и сервер, но я аутентифицируюсь как пользователь домена с помощью ICredentialsProvider, и я подтвердил, что аутентифицирован как этот пользователь. Любые указатели будут полезны.

6
задан Daniel Mann 5 April 2016 в 16:09
поделиться