我试图通过书签使用循环结构来获取Desire2Learn实例中所有用户的列表,但由于某种原因,它会不断循环并且不会返回。当我调试它时,它显示了大量用户(远远超过我们在系统中的用户管理工具所示。我的代码的一部分在这里:
public async Task<List<UserData>> GetAllUsers(int pages = 0)
{
//List<UserData> users = new List<UserData>();
HashSet<UserData> users = new HashSet<UserData>();
int pageCount = 0;
bool getMorePages = true;
var response = await Get<PagedResultSet<UserData>>("/d2l/api/lp/1.4/users/");
var qParams = new Dictionary<string, string>();
do
{
qParams["bookmark"] = response.PagingInfo.Bookmark;
//users = users.Concat(response.Items).ToList<UserData>();
users.UnionWith(response.Items);
response = await Get<PagedResultSet<UserData>>("/d2l/api/lp/1.4/users/", qParams);
if (pages != 0)
{
pageCount++;
if (pageCount >= pages)
{
getMorePages = false;
}
}
}
while (response.PagingInfo.HasMoreItems && getMorePages);
return users.ToList();
}
我最初使用的是注释掉的List容器,但只是切换到HashSet,看看是否可以注意到重复添加的位置。
这很简单,但无论出于何种原因,它都无法正常工作。 Get<PagedResultSet<UserData>>()
方法只包装HTTP请求逻辑。我们每次都设置书签并发送。
用户管理工具表明系统中有39,695个用户。在运行了几分钟并打开循环中的UnionWith
后,我显示我的设置有211,800个用户。
我错过了什么?
答案 0 :(得分:2)
您似乎在此API中遇到了缺陷。下一步行动是让您的机构的批准支持联系人通过Desire2Learn帮助台打开事件。请在事件报告中提及Sarah-Beth Bianchi知道这个问题,我将与我们的支持团队合作,以适当地指导这个问题。