API календаря Office 365 извлекает только 10 записей

У меня возникает проблема при попытке получить события из календаря Office 365 Проблема в том, что я могу получить только 10 событий, а результат eventsResult.MorePagesAvailable всегда ложно

У меня более 50 встреч в месяц, а eventsResult получает только 10

Код для получения событий: -

 var eventSource = service.Me.Calendar.Events;

 if (!String.IsNullOrEmpty(calendarId))
                {
  eventSource = service.Me.Calendars[calendarId].GetCalendarView(lowerBounday, upperBoundary);
   // lowerBounday - Start Date for fetching events from calendar
   // upperBoundary - End Date for fetching events from calendar

  var eventsResult = await (from i in eventSource orderby i.Start select i).ExecuteAsync();
 }

Та же проблема возникает при получении всех календарей. У меня больше 10 календарей в Office 365, но я все еще получаю только 10 с MorePagesAvailable как false. Код для получения всех календарей: -

 var allCalendars = await service.Me.Calendars.ExecuteAsync();
 bool checkNextPage = false;
                do
 {
  if (checkNextPage && allCalendars.MorePagesAvailable)
  {
   allCalendars = await allCalendars.GetNextPageAsync();
  }
  foreach (ICalendar calendar in allCalendars.CurrentPage)
  {
   lock (calendars)
   {
    calendars.Add(new CalendarData(calendar.Name, calendar.Id)
    {
     HasWriteAccess = true,
     IsFreeBusy = true
    });
   }
  }
  if(!checkNextPage)
   checkNextPage = true;
 } while(allCalendars.MorePagesAvailable)

Для этого кода мы используем Microsoft.Office365 DLL версии 1.0.35. Работал нормально до 10 сентября 2015 года. Что-то изменилось в API или нам чего-то не хватает? Любая помощь могла бы быть полезна.


person Sunil    schedule 15.09.2015    source источник
comment
Хм, похоже, в ответе нет @odata.nextLink. Дай мне посмотреть, что я смогу узнать.   -  person Jason Johnston    schedule 15.09.2015


Ответы (2)


Оказывается, это известная проблема, над которой работают наши инженеры. Извините за беспокойство!

ОБНОВЛЕНИЕ: исправление находится в стадии разработки. Я вижу @odata.nextLink в ответах моих клиентов, так что похоже, что он попадает на серверы в производственной среде.

person Jason Johnston    schedule 15.09.2015

10 - это номер по умолчанию. Вам нужно использовать что-то вроде этого https://outlook.office.com/api/v1.0/me/messages? $ top = number number = 5, 10 ... сколько событий вы хотите. Дополнительные сведения: https://msdn.microsoft.com/office/office365/APi/complex-types-for-mail-contacts-calendar#UseODataqueryparametersPageresults

person Nguyen Tho    schedule 15.09.2015