2014-02-25 4 views
0

나는 우리가 Desire2Learn의 인스턴스에있는 모든 사용자의 목록을 북마크를 통해 반복 구조를 사용하여 얻으려고 시도하지만 어떤 이유로 그것이 계속 반복되고 반환되지 않습니다. . 내가는 사용자 관리 도구에서와 같이 시스템에서 우리가 가진 것보다 훨씬 더 많은 사용자 (대량을 보여주는 디버깅 할 때 내 코드의 일부는 여기에 있습니다 : 나는 원래 목록 컨테이너를 사용했다Valence를 통해 모든 사용자 목록 가져 오기

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(); 
    } 

그것은 주석 처리되었지만 HashSet으로 바뀌 었습니다. 중복되는 부분이 추가 될 경우 알 수 있습니까?

어떤 이유로 든 작동하지 않습니다. Get<PagedResultSet<UserData>>() 메서드는 단순히 HTTP 요청 로직을 래핑합니다. 매번 북마크를 보내고 보내십시오.

사용자 관리 도구는 th 현재 시스템에있는 39,695 명의 사용자가 있습니다. 몇 분 동안 실행하고 UnionWith을 돌파 한 후 내 세트에 211,800 명의 사용자가 있다는 것을 보여주고 있습니다.

무엇이 누락 되었습니까?

답변

2

이 API에 결함이 발생했습니다. 그 다음 단계는 기관의 승인 된 지원 담당자가 Desire2Learn 헬프 데스크를 통해 사건을 열도록하는 것입니다. 사건 보고서에서 Sarah-Beth Bianchi가이 문제를 알고 있음을 언급하고, 지원 팀과 협력하여이 문제를 적절하게 안내 할 것입니다.

관련 문제