EWS медленный при получении нескольких календарей
У меня есть веб-страница (ASP.Net), которая отображает встречи в календаре нескольких пользователей. В настоящее время я извлекаю данные, делая асинхронные вызовы веб-службы, которая, в свою очередь, вызывает локальный EWS, используя код, подобный следующему:
var userMailbox = new Mailbox("user1@example.com");
var folderId = new FolderId(WellKnownFolderName.Calendar, userMailbox);
DateTime startDate = DateTime.Now.Date;
DateTime endDate = startDate.Date.AddDays(5);
CalendarView cView = new CalendarView(startDate, endDate);
cView.PropertySet = new PropertySet(AppointmentSchema.Subject, AppointmentSchema.Start, AppointmentSchema.End);
var appointments = _Service.FindItems(folderId, cView);
//Do something with results
Это решение работает, но невероятно медленно. Каждый звонок в EWS занимает около 800 мс. Если я отключу 10 асинхронных запросов, похоже, что EWS ставит их в очередь и обрабатывает их по одному, а это означает, что для полного обновления страницы с 10 почтовыми ящиками требуется около 8 секунд.
Я не могу изменить какой-либо аспект конфигурации EWS.
Узкое место, по-видимому, связано с возвратом в EWS, а не с количеством возвращаемых данных. Имея это в виду, можно ли сделать один вызов в EWS, который может принимать несколько идентификаторов папок и возвращать встречи в календаре для нескольких пользователей?