[英]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.