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, который может принимать несколько идентификаторов папок и возвращать встречи в календаре для нескольких пользователей?

0 ответов

Другие вопросы по тегам