2016-10-20 5 views
0

mapiNameSpace.GetItemFromID(entryId、storeID)を使用してアイテムを取得しようとしています。 部分的にキャッシュされた交換モード(1か月間のみキャッシュ)を使用しています。 このメソッドは、キャッシュされた項目に対して正常に機能します。しかし、私は月よりも古いアイテムのためにそれをしようとすると、以下の例外が Outlook:店舗IDが部分キャッシュモードで指定されているとGetItemFromIDが機能しない

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.この問題は、Outlookアカウント設定の部分キャッシュExchangeモードでのみ発生します。完全にオン/オフしないとき

答えて

0

ストアエントリIDを指定しないと、Outlookはすべてのストアを検索しません。 OutlookはIMAPISession::OpenEntryを呼び出します。ストアがすでに現在のセッションで開かれている場合は、MAPIシステムがコールを誘導するストアを知るように、独自のエントリIDを登録する機会がありました。そうしないと、「不明なエントリID」エラーが発生します。店舗エントリIDが指定されている場合は、最初に開き、IMsgStore::OpenEntryを使用してメッセージを開きます。

おそらく、あなたのケースでは、アイテムがオンラインストアから開かれているということです。これは、通話がネットワークを経由しているために高価です。

+0

ありがとうございます。について – shrikanthbat

+0

ありがとうございます。ストアが既に現在のセッションで開かれている場合は、ストアエントリIDの有無に関係なくパフォーマンスの問題は発生しないはずです。 私のポイントは、同じフォルダ内の2つのアイテム、ローカルキャッシュ内に1つ、オンラインでもう1つでした。 StoreIdentifierがOutlookSpyとコードの両方で同じであることがわかります。しかし、entryIdとstoreIDでGetItemFromIDを呼び出すと、オンラインのアイテムがその例外をスローしています。 しかし、ちょうどentryIdだけを使用して正常に動作しています。 オンライン版のアイテムは、キャッシュされたアイテムとは異なるstoreEntryIdを持っていますか? – shrikanthbat

+0

アイテムがオンラインストアにのみ存在する場合、OutlookはローカルOSTファイルとは対照的に、サーバーに接続して開く必要があるため、時間がかかりますか? –

関連する問題