通过Valence获取所有用户的列表

时间:2014-02-25 16:07:27

标签: c# desire2learn

我试图通过书签使用循环结构来获取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个用户。

我错过了什么?

1 个答案:

答案 0 :(得分:2)

您似乎在此API中遇到了缺陷。下一步行动是让您的机构的批准支持联系人通过Desire2Learn帮助台打开事件。请在事件报告中提及Sarah-Beth Bianchi知道这个问题,我将与我们的支持团队合作,以适当地指导这个问题。