提供了不一致的結果經過很多調試之後,我將複雜的Managed EWS問題細化到以下兩個簡單的測試用例。第一個作品,第二個失敗:FindItems()和BindToItems()給EmailMessage.Sender.Address
var view = new ItemView(100) { PropertySet = new PropertySet { EmailMessageSchema.Id } };
var findResults = ews.FindItems(WellKnownFolderName.Inbox, view)
var bindResults = ews.BindToItems(findResults.Select(r => r.Id), new PropertySet { EmailMessageSchema.Sender });
// Sanity check
Assert.AreEqual(1, bindResults.Count());
// The results I care about
Assert.AreEqual("David Seiler", bindResults[0].Sender.Name);
Assert.AreEqual("[email protected]", bindResults[0].Sender.Address);
有人可能試圖削減了BindToItems()
通話,並直接使用FindItems()
:
var view = new ItemView(100) { PropertySet = new PropertySet { EmailMessageSchema.Sender } };
var findResults = ews.FindItems(WellKnownFolderName.Inbox, view)
// This part still works fine
Assert.AreEqual(1, findResults.Count());
// So does this
Assert.AreEqual("David Seiler", findResults[0].Sender.Name);
// ...but this fails! Sender.Address is null
Assert.AreEqual("[email protected]", findResults[0].Sender.Address);
誰能告訴我在哪裏,我已經錯了嗎?從文檔看來,它確實看起來好像這應該起作用。並非所有的屬性都可以通過FindItems()
來讀取,這是真的,但是當我嘗試訪問它們時通常會拋出這些屬性,並且無論如何,這些屬性的list都是MSDN上的,而Sender
則不屬於它。這是怎麼回事?
我注意到一個類似的問題與聯繫方式和電子郵件地址之前,下面一行。我認爲這可能與全球地址簿有關,因爲當使用'FindItems'檢索聯繫人時,我會得到一種奇怪的格式。下面的答案幫了我(我不喜歡額外的電話,但在我的情況下,它是可管理的)。 service.LoadPropertiesForItems(items,PropertySet.FirstClassProperties); – 2013-06-19 15:16:44