Microsoft Exchange Server:已请求此属性,但服务器EWS未返回此属性

问题描述

我正在尝试使用C#获取布尔属性Exchange Web服务“ Ismeeting”的值。我在PropertySet对象中定义以下属性

PropertySet propertySet = new PropertySet(ItemSchema.Subject,AppointmentSchema.AppointmentState,AppointmentSchema.Start,AppointmentSchema.End,AppointmentSchema.Organizer,AppointmentSchema.Ismeeting,AppointmentSchema.IsCancelled,AppointmentSchema.IsRecurring,AppointmentSchema.IsAllDayEvent,AppointmentSchema.LegacyFreeBusyStatus,ItemSchema.LastModifiedTime,AppointmentSchema.TimeZone,AppointmentSchema.MeetingRequestWasSent,AppointmentSchema.ICalUid,ItemSchema.Id);

但是,当尝试获取属性时:

foreach (Appointment a in appointments)
            {
               Console.WriteLine(a.Ismeeting.ToString());
            }

发生异常“ ServiceObjectPropertyException”。请求了此属性,但服务器未返回该属性。 IsCancelled属性也存在类似的问题。将AppointmentState属性添加到PropertySet有所帮助。 使用Ismeeting属性,没有解决方案的想法。如果有人可以告诉我,我会很高兴。谢谢。

解决方法

由于性能原因,FindItems仅返回属性的子集。如果您确实需要该属性,则需要在Item上进行其他GetItem(或Bind)请求。如果您使用EWS托管API,则可以通过LoadPropertiesForItems完成此操作,请参见https://docs.microsoft.com/en-us/dotnet/api/microsoft.exchange.webservices.data.exchangeservice.loadpropertiesforitems?view=exchange-ews-api&WT.mc_id=DOP-MVP-10145

您还应该可以只使用AppointmentState,该状态应为会议返回0x0001