我創建了一個小型應用程序,獲取聯繫從外部源對象。然後,根據一些配置,我要創建/ upadate在用戶的聯繫人文件夾這些接觸我們的Exchange服務器上,那麼該用戶打開它的MS Outlook的下一次,他看到了新的聯繫人(在Exchange服務器上,我有具有模擬能力的用戶,所以安全性不是問題)。的Exchange Web服務(EWS)FindItems不工作,如果接觸是在GAL
對於這一點,我使用EWS庫工作良好的FindItems(folderId, filter, view)
方法。對於過濾器,我使用的是用戶的電子郵件地址,這是一個相當不錯的關鍵...如果我得到一個結果回來了,這只是意味着聯繫已經存在,那我需要做一個更新,而不是創建。一切正常,直到這裏......
,但我遇到當聯繫(實際上是電子郵件地址)在GAL(全局地址列表)已經存在的一個問題。在這種情況下,FindItems
方法返回即使聯繫的文件夾中不存在任何結果!看起來(這是假設)交換服務器爲聯繫人創建一個鏈接,該聯繫人的電子郵件地址已經存在於GAL中,而不是新的聯繫人。這可以解釋爲什麼FindItems
方法在這種情況下不返回任何東西。 奇怪的是,如果我在另一個屬性上進行過濾(例如在第一個和最後一個名字的組合上),它就可以工作!
目前,什麼情況是,每個聯繫已經在GAL存在,創造而非更新完成(因爲FindItems
方法返回任何內容),以及作爲結果,同樣聯繫被創建X時間(而不是創建一次Beeing,然後更新X-1時間)。
這個問題當然是,我怎麼知道聯繫人已存在於GAL中的交換文件夾中?
當前代碼:
ItemView view = new ItemView(5)
{
PropertySet = new PropertySet(BasePropertySet.FirstClassProperties)
};
SearchFilter f = new SearchFilter.IsEqualTo(ContactSchema.EmailAddress1, email);
FindItemsResults<Item> contactItems = _service.FindItems(folderId, f, view);
int resultCount = contactItems.Count(); // Always 0 if GAL, otherwise it works