我正在使用 EWS 托管 API 加载特定房间资源的约会,并通过 WCF 发布它以供平板设备使用。
如果组织者在会议预定开始 15 分钟后没有执行特定操作,我想取消会议室预订。
因为平板设备只有 StoreId 属性来识别事件,所以我实现了以下代码:
public bool CancelMeeting(string appointmentId, string roomEmail)
{
try
{
var service = GetExchangeService();
var ai = new AlternateId[1];
ai[0] = new AlternateId();
ai[0].UniqueId = appointmentId;
ai[0].Format = IdFormat.HexEntryId;
ai[0].Mailbox = roomEmail;
ServiceResponseCollection<ConvertIdResponse> cvtresp = service.ConvertIds(ai, IdFormat.EwsId);
var appointment = Appointment.Bind(service, ((AlternateId)cvtresp[0].ConvertedId).UniqueId);
if (appointment.Resources.Count != 0)
appointment.Resources.RemoveAt(0);
appointment.Location = string.Empty;
appointment.Save(SendInvitationsMode.SendOnlyToAll);
return true;
}
catch (Exception ex)
{
return false;
}
}
然而,
if (appointment.Resources.Count != 0)
appointment.Resources.RemoveAt(0);
在此代码中,约会.Resources.Count 始终为 0。根据这篇文章(无法从 Exchange Web 服务检索资源(房间)),您需要告诉 EWS 专门包含资源。使用 Appointment.Bind 时如何指定包含资源?