我有一个显示多个用户日历约会的网页 (ASP.Net)。目前,我正在通过对 Web 服务进行异步调用来获取数据,该 Web 服务又使用类似于以下的代码调用现场 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 进行一次调用,该调用可以接受多个文件夹 ID 并返回多个用户的日历约会?