2017-05-19 5 views
0

VSTOアドインがあり、EntryIDまたはSubjectによってOutlookタスクを検索し、その上で操作を実行しています。Outlook VSTOアドイン80080005タスクの検索時に例外が発生する

ユーザーの一つは、それから、次のエラーメッセージをログに記録:

Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE))

ここで私は、エラー・ログの説明のカップルを見つけたタスク項目に

public Outlook.TaskItem FindTask(String EntryID, String Subject) 
{ 
    try 
    { 
     Outlook.Application OutlookApp = new Outlook.Application(); 
     Outlook.NameSpace ns = null; 
     Outlook.MAPIFolder tasksFolder = null; 
     Outlook.Items taskFolderItems = null; 
     Outlook.Items filteredtaskFolderItems = null; 
     Outlook.TaskItem task = null; 


     ns = OutlookApp.Session; 
     ns.SendAndReceive(false); 
     tasksFolder = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderTasks); 
     taskFolderItems = tasksFolder.Items; 

     //Try to find the task by entryID 
     dynamic OutlookItem = null; 
     OutlookItem = ns.GetItemFromID(EntryID); 
     if (OutlookItem != null) 
     { 
      if (OutlookItem is Outlook.TaskItem) 
      { 
       Outlook.TaskItem foundItem = (Outlook.TaskItem)OutlookItem; 
       return foundItem; 
      } 
     } 

     //If not found by EntryID, find it by a Subject 
     string subjectmatch = "[Subject] ='" + Subject + "'"; 
     filteredtaskFolderItems = taskFolderItems.Restrict(subjectmatch); 

     for (int i = 1; i <= filteredtaskFolderItems.Count; i++) 
     { 
      task = (Microsoft.Office.Interop.Outlook.TaskItem)filteredtaskFolderItems[i]; 
      return task; 
     } 
    } 
    catch(Exception ex) 
    { 
     //log exception 
    } 
    return null; 
} 

を見つける機能がありますしかし、それらのどれも実際には意味をなしませんでした(複数のユーザーが同じCOMインターフェイスにアクセスしている、レジストリが乱れているなど)

コードが間違っている可能性があります。この例外が生成されている理由、またはOutlooksの障害ですか?

私は、別のOfficeアプリケーションからOutlookをインスタンス化していることに言及しておきます。

答えて

0

これは、お使いのアプリがOutlookとは異なるセキュリティコンテキストで実行されている可能性が高いことを示しています。
どちらのアプリも昇格された権限(管理者として実行)で実行されていますか?

また、このコードがアドインにある場合、アドインに渡されたインスタンスを使用する代わりに、なぜOutlook.Applicationの新しいインスタンスを作成していますか?

+0

こんにちはドミトリー!あなたの返信をありがとう、これらのOutlookの問題に積極的に!上記のコードは、Excelのアドインで実行されます。ここでは、Outlookのインスタンスを作成し、そこから作業します。アドインはExcelとOutlookの間に接続を作成します。そのため、新しいOutlookオブジェクトをインスタンス化します。 セキュリティコンテキストに関して、私はそれに関する情報を知らず、MSDNのチュートリアルと記事、およびSDKを使ってこれを作成しました。問題を再現することはできませんが、クライアントの一部ができます。彼が望むたびにOutlookがタイムアウトするように見え、例外が発生します。 – Laureant

+0

また、この質問もチェックできれば非常にうれしいです:https://stackoverflow.com/questions/43782786/c-sharp-outlook-vsto-add-in-error-while-trying-to-getget -item-in-a-exchange-setup 私は解決できないもう一つのOutlookミステリーです。 – Laureant

+0

「run as Administrator」のように起動されますか? Outklook.Applicaitonオブジェクトのインスタンスをインスタンス化するコードの前にOutlookが**実行されていない場合は**動作しますか? –

関連する問題