【问题标题】:GetWorkItemsAsync fails when it retrieves 1800 workitemsGetWorkItemsAsync 在检索 1800 个工作项时失败
【发布时间】:2017-12-20 10:20:19
【问题描述】:

GetWorkItemsAsync 在检索 1800 个工作项时失败。示例:

int[] ids = (from WorkItem info in wlinks select info.Id).ToArray();
WorkItemTrackingHttpClient tfvcClient = _tfs.GetClient<WorkItemTrackingHttpClient>();
List<Microsoft.TeamFoundation.WorkItemTracking.WebApi.Models.WorkItem> dworkitems = tfvcClient.GetWorkItemsAsync(ids).Result;

如果我传递包含 90 个元素的 Id 数组,它可以正常工作。

是否存在只能获取n个元素的限制,如何克服这个问题?

【问题讨论】:

  • 您可以为“失败”提供任何清晰的描述吗?有什么错误吗?
  • 消息:“发生了一个或多个错误。”在 System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) 的源“mscorlib”StackTrace“\r\n 在 System.Threading.Tasks.Task1.GetResultCore(Boolean waitCompletionNotification)\r\n at System.Threading.Tasks.Task1.get_Result()\r\n 在 TestCaseExport.FrmMain.button1_Click (Object sender, EventArgs e) in C:\\Users\\angolla\\Source\\Repos\\Export work items to excel from TFS\\TestCaseExport\\FrmMain.cs:line 4040"
  • 如果您需要任何其他信息,请告诉我,感谢您的帮助

标签: tfs


【解决方案1】:

是的,URL 长度是有限制的,一旦超过了 URL 长度就会出现这个异常。

因此,作为一种解决方法,您可以一次将调用限制在允许的范围内(例如,一次 200 个 id)。然后多次调用查询。

很遗憾,您遇到了 URL 长度的限制。一旦网址 已超过长度,服务器只获取截断版本, 因此,截断的工作项 ID 无效的可能性很高。

我建议您一次将调用限制为 200 个 id。

来源在这里https://github.com/Microsoft/vsts-dotnet-samples/issues/49

URL长度限制参考这个帖子:What is the maximum length of a URL in different browsers?

这个类似的帖子供您参考:Is there any restriction for number of characters in TFS REST API?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 2020-01-13
    • 1970-01-01
    相关资源
    最近更新 更多