Ошибка связи EWS при загрузке электронной почты - PullRequest
0 голосов
/ 06 декабря 2018

Я читаю постоянные электронные письма с сервера обмена и обрабатываю их вложения.Я видел различные примеры одного и того же, но все равно получаю ошибку

You must load or assign this property before you can read its value

Мой код такой, как показано ниже

ItemView itemView = new ItemView(NoEmailProcess);
itemView.OrderBy.Add(ItemSchema.DateTimeReceived, SortDirection.Ascending);
FindItemsResults<Item> searchResults = service.FindItems(folder.Id, itemView);
foreach (var item in searchResults)
{
  if (item is EmailMessage)
  {
    item.Load();
    try
    {
      // Process my email
    }
    catch
    {
        // error
    }
  }
}

Следует отметить, что я не получаю эту ошибку каждый раз.Я получаю его 10% раз и никогда во время отладки

Мне было интересно, должен ли я использовать «Bind» перед «Load»?

EmailMessage.Bind

Не уверен, в чем может быть проблема.Может ли кто-нибудь помочь с вопросами, которые я должен исследовать?

1 Ответ

0 голосов
/ 12 декабря 2018

Исключение с сообщением ". Вы должны загрузить или назначить это свойство, прежде чем сможете прочитать его значение ", если попытаетесь прочитать свойство, которого нет в Item. * 1004.*

Item s, возвращаемые service.FindItems , содержат только некоторые свойства .Хотя свойство ItemSchema.HasAttachments возвращается для Item, свойство ItemSchema.Attachments отсутствует.Таким образом, вы можете только проверить, есть ли вложения на Item.Но попытка прочитать их сразу вызовет показанное исключение.

Прежде чем вы сможете прочитать свойство ItemSchema.Attachments, вам нужно сначала загрузить его, вы можете сделать это с помощью ItemSchema.Bind или ItemSchema.Load.Оба вызова приводят к запросу GetItem.

Поскольку запрос GetItem также возвращает свойство ItemSchema.Attachments (см. Связанный документ MS выше), вы можете прочитать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...