Я использую управляемый API-интерфейс веб-служб Exchange для работы с задачами (Exchange 2007 с пакетом обновления 1). Я могу создать их хорошо. Однако, когда я пытаюсь сделать обновления, это работает для всех полей, кроме поля .Body. Всякий раз, когда я пытаюсь получить доступ (прочитать / обновить) к этому полю, оно выдает следующую ошибку:
"You must load or assign this property before you can read its value."
Код, который я использую, выглядит следующим образом:
//impersonate the person whose tasks you want to read
Me.Impersonate(userName); //home-made function to handle impersonation
//build the search filter
Exchange.SearchFilter.SearchFilterCollection filter = New Exchange.SearchFilter.SearchFilterCollection();
filter.Add(New Exchange.SearchFilter.IsEqualTo(Exchange.TaskSchema.Categories, "Sales"));
//do the search
EWS.Task exTask = esb.FindItems(Exchange.WellKnownFolderName.Tasks, filter, New Exchange.ItemView(Integer.MaxValue));
exTask.Subject = txtSubject.Text; //this works fine
exTask.Body = txtBody.Text; //This one gives the error implying that the object isn't loaded
Странно, что проверка пакета свойств показывает, что объект содержит 33 свойства, но {Body} не является одним из них. Это свойство, кажется, унаследовано от базового класса .Item или чего-то еще.
Итак, мне нужно повторно загрузить объект как тип Item? Или перезагрузить через .Bind или что-то? Имейте в виду, что мне нужно сделать это с тысячами предметов, поэтому эффективность имеет значение для меня.