전역 UID를 사용하여 약속을 찾으려고합니다. 전 세계 UID가 무엇인지 미리 알고 있습니다 (약속을 만들 때 설정할 수 있습니다).확장 속성을 사용하여 EWS 약속을 찾으려고 시도합니다.
이 URL을 참조하여 ExtendedPropertyDefinition을 만들었습니다. http://msdn.microsoft.com/en-us/library/cc815676(v=office.15).aspx.
var service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.Credentials = new NetworkCredential("","","");
service.Url = new Uri("");
ExtendedPropertyDefinition epICalId = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Appointment, 3, MapiPropertyType.String);
ItemView view = new ItemView(50);
view.PropertySet = new PropertySet(BasePropertySet.FirstClassProperties);
view.OrderBy.Add(ItemSchema.DateTimeReceived, SortDirection.Descending);
FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Calendar, new SearchFilter.IsEqualTo(epICalId, "CustomUID123"), view);
var x = findResults.TotalCount;
문제는 회의가 반환되지 않는다는 것입니다. 어떤 아이디어?
ICalUID를 여전히 바이너리 개체로 변환 할 수 없습니다. 그것은 다른 객체라는 것일 수도 있습니다 (아래 주석 참조). 하지만 확장 속성을 사용하여 검색 필터를 설정할 수 있습니다. 아래 코드에서 "temp"개체를 저장하고 검색을 위해 다시 사용하기 만하면됩니다.
var PROP_DEF_PidLidGlobalObjectId = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Meeting, 0x00000003, MapiPropertyType.Binary);
appt.Load(new PropertySet(BasePropertySet.FirstClassProperties, PROP_DEF_PidLidGlobalObjectId);
object temp;
appt.TryGetProperty(PROP_DEF_PidLidGlobalObjectId, out temp);
var sf2 = new SearchFilter.IsEqualTo(PROP_DEF_PidLidGlobalObjectId, Convert.ToBase64String(temp as byte[]));
MapiType을 수정하면 ItemView에서 개체를 다시 가져올 수있었습니다. 그러나 나는 여전히 인코딩 문제가 있습니다. Convert.ToBase64String을 실행하면 반환되는 byte []에 ICalUId에 포함 된 값과 비슷한 문자열이 표시됩니다. – quarksoup
ICalUID와 글로벌 고유 ID는 동일한 속성이 아닙니다. 그들은 서로 다른 가치를 가질 것입니다. – user1017413
나는 그들이 똑같은지 꽤 확신한다. MS-OXOCAL.pdf http://msdn.microsoft.com/en-us/library/cc425490(v=exchg.80).aspx의 섹션 4.1.2.1을 확인하십시오. 제공된 값은 ICalUID와 동일하게 나타납니다. – quarksoup