簡體   English   中英

WorkItemHttpClient-找不到TFS工作項或沒有讀取它的權限

[英]WorkItemHttpClient - TFS work item not found or not permission to read it

請找到下面的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:我已經嘗試通過傳遞單個workitemId來使用GetWorkItemAsync獲取工作項數據。 此方法有效,但是我得到的數據未與最新數據同步,它始終為我提供直到上周的數據。 是否有適當的方法來獲取最新的?

非常感謝您對此問題的任何幫助。

我得到了第二個問題的答案。 似乎我在時間部分上犯了一個愚蠢的錯誤。

我添加了時間戳記值,現在我可以獲取最新數據。

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

因此,下次如果您堅持使用某些具有日期功能的東西,則永遠不要忽略“時間”部分。 (很傻,但是總是不被注意)。

編碼愉快!! 干杯!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM