2016-10-20 5 views
0

Я пытаюсь получить элемент с помощью mapiNameSpace.GetItemFromID (entryId, storeID). Я использую режим частичного кэширования обмена (т. Е. Кеш только на месяц). Метод отлично работает для кешированных элементов. Но когда я пытаюсь это за пункт старше месяца, ниже исключениеOutlook: GetItemFromID не работает, если идентификатор хранилища задан в режиме частичного кэширования Exchange

System.Runtime.InteropServices.COMException (0x8004010F): The message you specified cannot be found. 
    at Microsoft.Office.Interop.Outlook.NameSpaceClass.GetItemFromID(String EntryIDItem, Object EntryIDStore) 

Но если я пытаюсь его только EntryID и она работает. Но это займет много времени, так как оно будет искать все магазины.

В чем причина ошибки при использовании параметра storeID в режиме частичного кэширования?

P.S. Эта проблема возникает только в частичном режиме кэширования Exchange в настройках учетной записи Outlook. Не когда полностью включено/выключено

ответ

0

Если вы не укажете идентификатор записи в хранилище, Outlook не ищет все магазины. Outlook вызывает IMAPISession::OpenEntry. Если хранилище уже было открыто в текущем сеансе, у него была возможность зарегистрировать свои собственные идентификаторы входа, чтобы система MAPI узнала, к какому хранилищу следует направлять вызов. В противном случае вы получите ошибку «unknown id». Если указан идентификатор записи в хранилище, он открывается первым, а затем сообщение с использованием IMsgStore::OpenEntry.

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

+0

Thankks. Относительно – shrikanthbat

+0

Спасибо. Поэтому я думаю, что не должно быть проблем с производительностью с идентификатором записи или без него, если магазин уже открыт в текущем сеансе. Моя точка была, два элемента в одной папке, один в локальном кеше и другой в онлайн-режиме, Я вижу, что Store-entryId такой же как для OutlookSpy, так и для кода. Но при вызове GetItemFromID с entryId и storeID элемент из Интернета бросает это исключение. Но просто использование только entryId работает нормально. Итак, у пункта в онлайн-версии есть другой storeEntryId по сравнению с кэшированным товаром? – shrikanthbat

+0

Если элемент присутствует только в интернет-магазине, Outlook должен подключиться к серверу, чтобы открыть его (в отличие от локального файла OST), так что вы не ожидаете, что он займет больше времени? –