提供了不一致的结果经过很多调试之后,我将复杂的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