EWS:检查日历约会是否已取消

EWS:检查日历约会是否已取消

我正在尝试使用 VB.Net 查询 EWS,并且可以检索我想要的约会的大多数属性,但是当我尝试检索 IsCancelled 属性时遇到以下异常:This property was requested, but it wasn't returned by the server.

是否有人能够告知 IsCancelled 属性是否存在问题(即它是否始终设置为 true 或 false)?

我们的环境是混合环境,EWS 从 Exchange 2007SP1 运行,但是我们确实有 2010 服务器(即将在一个月左右开始升级)。

有人能告诉我通过 EWS 提供的所有属性的资源吗?这个列表很长,而且我相信还有其他我还没有偶然发现的有用的宝贵资源。

任何关于在设置为资源的邮箱中跟踪约会的资源(使用 2010 年的房间,但还没有到达那里),例如已取消和更新的会议,都将不胜感激。

谢谢,

马特

答案1

根据财产证明文件,它是一种bool类型,而Nullable<bool>不是应该总会回报一些东西。

您收到该消息的事实This property was requested, but it wasn't returned by the server可能表明您要求返回的物品具有不适当的属性(即要求isCancelled某种EmailMessage类型的属性)。

我要做的是一个简单的健全性检查,并验证退回物品清单都是类型正确的Appointment,而不是其他东西。

您可以尝试调用FindAppointments该类的方法ExchangeService,该方法将专门查找约会项目,但我个人遇到了一些问题,该方法没有完全返回我期望的结果。我最终做的是调用FindItems<Appointment>(WellKnownFolderName.Calendar, new ItemView(1000))并循环遍历这些项目。

答案2

经过大量的反复尝试后,我发现AppointmentSchema.AppointmentState当您想要该AppointmentSchema.IsCancelled房产时,您还需要请求该房产。

以下是我可以运行的代码:

var calendarView = new CalendarView(startTime, endTime);
var folderId = new FolderId(WellKnownFolderName.Calendar, new Mailbox(room.Email.Address));
calendarView.PropertySet = new PropertySet(
    // AppointmentState is required for IsCancelled to work
    AppointmentSchema.AppointmentState,
    AppointmentSchema.IsCancelled
);
var roomBookings = exchangeService.FindAppointments(folderId, calendarView);

相关内容