我正在尝试使用 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);