VSTO Outlook 2007 Addin Startup выдает System.Runtime.InteropServices.COMException (0x80020009): не удается завершить операцию.Вы не связаны - PullRequest
1 голос
/ 23 августа 2011

Мы создаем надстройку Outlook 2007 с помощью VSTO.У нас есть код в логике инициализации надстройки, который извлекает MAPIOBJECT, связанный с Application.Session.Код, о котором идет речь, выглядит следующим образом:

public partial class ThisAddIn
{
    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        try
        {
            var addIn = Globals.ThisAddIn;
            var application = addIn.Application;
            var mapiObject = application.Session.MAPIOBJECT;
        }
        catch (Exception e)
        {
            // HANDLE ERROR
        }
    }

    private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
    {
                        // ...
    }

    // Other VSTO generated code

}

Этот код работает как брелок в большинстве случаев.Однако при попытке получить доступ к свойству MAPIOBJECT из свойства Session мы сталкиваемся со следующей ошибкой:

System.Runtime.InteropServices.COMException (0x86220009): Cannot complete the operation. You are not connected.
  at Microsoft.Office.Interop.Outlook._NameSpace.get_MAPIOBJECT()
  at MyTestAddIn.ThisAddIn.ThisAddIn_Startup(object, System.EventArgs) in C:\foo\MyTestAddIn\ThisAddIn.cs:line 19

Мы не можем понять, почему код работает большую часть времени, но иногда терпит неудачу.Мы подумали, что эта проблема связана с прерыванием работы сети / работой пользователя в автономном режиме.Мы попробовали несколько комбинаций состояний соединения с преднамеренной работой в автономном режиме из Outlook, чтобы отключить сетевой кабель, когда Outlook собирается загрузить надстройку.Но мы не смогли воспроизвести проблему.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 23 августа 2011

Обычно плохая идея запрашивать сеанс MAPI на таком раннем этапе, потому что он может еще не войти в систему должным образом.Почему бы не попросить сеанс в тот момент, когда вам на самом деле нужно это?

...