내가 사용 restictions
와 방법을 발견 (그러나 findItemRequest 객체의 findItemRequest.Item findItemRequest.Restictions 속성이 정의되어있는 경우 를 검색하여 이 조합 오류 ... 제공)
경우에만를 Item 또는 Restictions가 정의 된 findItemRequest 객체에 대해 정의 됨
List<CalendarInfo> calendarEvents = new List<CalendarInfo>();
ExchangeServiceBinding esb = EWS.Helper.ExchangeHelper.GetExchangeBinding(credentials);
// Form the FindItem request.
FindItemType findItemRequest = new FindItemType();
CalendarViewType calendarView = new CalendarViewType();
calendarView.StartDate = criteria.StartDateAndTime;
calendarView.EndDate = criteria.EndDateAndTime;
if (criteria.MaxItemsToReturn > 0)
{
calendarView.MaxEntriesReturned = criteria.MaxItemsToReturn;
calendarView.MaxEntriesReturnedSpecified = true;
}
findItemRequest.Item = calendarView;
//--
PathToExtendedFieldType sySyncProp = new PathToExtendedFieldType();
sySyncProp.PropertyTag = "0x3008";
sySyncProp.PropertyType = MapiPropertyTypeType.SystemTime;
// Define restrictions
RestrictionType ffRestriction = new RestrictionType();
IsGreaterThanOrEqualToType ieGreater = new IsGreaterThanOrEqualToType();
ieGreater.FieldURIOrConstant = new FieldURIOrConstantType();
ieGreater.FieldURIOrConstant.Item = new ConstantValueType();
(ieGreater.FieldURIOrConstant.Item as ConstantValueType).Value = DateTime.Now.AddDays(-1).ToUniversalTime().ToString("u");
ieGreater.Item = sySyncProp;
ffRestriction.Item = ieGreater;
findItemRequest.Restriction = ffRestriction;
//--
// Define which item properties are returned in the response.
ItemResponseShapeType itemProperties = new ItemResponseShapeType();
// Use the Default shape for the response.
itemProperties.BaseShape = DefaultShapeNamesType.AllProperties;
//insert last modified time value also to responses
PathToExtendedFieldType[] ptufta = new PathToExtendedFieldType[1];
ptufta[0] = new PathToExtendedFieldType();
ptufta[0].PropertyTag = "0x3008"; //Property Tag for LastModifiedTime
ptufta[0].PropertyType = MapiPropertyTypeType.SystemTime;
itemProperties.AdditionalProperties = ptufta;
findItemRequest.ItemShape = itemProperties;
DistinguishedFolderIdType[] folderIDArray = new DistinguishedFolderIdType[1];
folderIDArray[0] = new DistinguishedFolderIdType();
folderIDArray[0].Id = DistinguishedFolderIdNameType.calendar;
if (!string.IsNullOrEmpty(criteria.EmailAddress))
{
folderIDArray[0].Mailbox = new EmailAddressType();
folderIDArray[0].Mailbox.EmailAddress = criteria.EmailAddress.Trim();
}
findItemRequest.ParentFolderIds = folderIDArray;
// Define the traversal type.
findItemRequest.Traversal = ItemQueryTraversalType.Shallow;
try
{
// Send the FindItem request and get the response.
FindItemResponseType findItemResponse = esb.FindItem(findItemRequest);
// Access the response message.
ArrayOfResponseMessagesType responseMessages = findItemResponse.ResponseMessages;
ResponseMessageType[] rmta = responseMessages.Items;
int folderNumber = 0;
foreach (ResponseMessageType rmt in rmta)
{
// One FindItemResponseMessageType per folder searched.
FindItemResponseMessageType firmt = rmt as FindItemResponseMessageType;
if (firmt.RootFolder == null)
continue;
FindItemParentType fipt = firmt.RootFolder;
object obj = fipt.Item;
// FindItem contains an array of items.
if (obj is ArrayOfRealItemsType)
{
ArrayOfRealItemsType items = (obj as ArrayOfRealItemsType);
if (items.Items == null)
{
// Console.WriteLine("Folder {0}: No items in folder", folderNumber);
folderNumber++;
}
else
{
CalendarInfo ce;
CalendarItemType cal;
foreach (ItemType it in items.Items)
{
if (it is CalendarItemType)
{
cal = (CalendarItemType)it;
ce = GetCalendarInfo(esb, cal);
calendarEvents.Add(ce);
}
//Console.WriteLine("Folder {0}: Item identifier: {1}", folderNumber, it.ItemId.Id);
}
folderNumber++;
}
}
}
//Console.ReadLine();
}
catch (Exception e)
{
throw;
}
return calendarEvents;