WorkItemHttpClient - рабочий элемент TFS не найден или нет разрешения на его чтение - PullRequest
0 голосов
/ 13 февраля 2019

Пожалуйста, найдите ниже запрос Wiql.(Получить все рабочие элементы с даты на дату)

 @"SELECT *  FROM WorkItems  WHERE [System.TeamProject] = '" + _teamProjectName + "'  and( [System.ChangedDate] >= '" + fromDate + "' and [System.ChangedDate] <= '" + toDate + "')  ORDER BY [System.AssignedTo]"

Я получаю все рабочие элементы из этого запроса в соответствии с приведенным ниже кодом.(Пожалуйста, дайте мне знать, если запрос правильный).Но всякий раз, когда я пытаюсь вызвать эту функцию GetWorkItemsAsync, я получаю сообщение об ошибке -

Рабочий элемент TFS 'xyz' не существует или у вас нет разрешения на его чтение

По сути, fromDate - это начало недели, toDate - это конец недели.

 using (WorkItemTrackingHttpClient workItemTrackingHttpClient = connection.GetClient<WorkItemTrackingHttpClient>())
            {
                //execute the query to get the list of work items in the results
                WorkItemQueryResult workItemQueryResult = workItemTrackingHttpClient.QueryByWiqlAsync(wiql).Result;

                IEnumerable<WorkItemReference> workItemRefs = workItemQueryResult.WorkItems;


                List<DateTime> weekDatesToGetWorkItems = weekDates();


                foreach (var item in weekDatesToGetWorkItems)
                {
                    try
                    {

                        int skip = 0;
                        const int batchSize = 100;

                        do
                        {
                            workItemRefs = workItemQueryResult.WorkItems.Skip(skip).Take(batchSize);
                            if (workItemRefs.Any())
                            {
                                //Exception here
                                List<WorkItem> workItems = workItemTrackingHttpClient.GetWorkItemsAsync(workItemRefs.Select(wir => wir.Id), this.GetFieldNames(), item).Result;
                                }
                        }
                        while (workItemRefs.Count() == batchSize);

                    }
                    catch (Exception ex)
                    {
//// Always gives an exception for one of the workItem "TFS work item xyz does not exist or you don't have permission to read it"
                    }

                }
}

Вопрос 1: Есть идеи, как можно отладить или разрешить вышеуказанное исключение?

Вопрос 2: Я уже пытался получить рабочий элементданные с GetWorkItemAsync путем передачи одного идентификатора workitemId.Это работает, но данные, которые я получаю, не синхронизируются с последними данными, они всегда дают мне данные до предыдущей недели.Есть ли правильный способ получить последнюю версию?

Любая помощь по этому вопросу высоко ценится.

1 Ответ

0 голосов
/ 04 марта 2019

Я получил ответ на второй вопрос.Кажется, я сделал глупую ошибку с частью времени.

Я добавил значение метки времени, и теперь я смог получить последние данные.

   List<WorkItem> workItems = workItemTrackingHttpClient.GetWorkItemsAsync(workItemRefs.Select(wir => wir.Id), this.GetFieldNames(),
 item.Add(new TimeStamp(23,59,59))).Result;
 //// Adding timestamp worked here.

Так что в следующий раз, если вызастрял в чем-то, что играет с датами никогда не игнорировать часть времени.(Глупо, но всегда остается незамеченным).

Удачного кодирования !!ура!

...