Outlook Redemption не входит в систему на определенных машинах - PullRequest
0 голосов
/ 26 мая 2020

Кто-нибудь знает, почему Redemption не может войти в систему?

Я удаляю папки по умолчанию из только что созданного PST. Это не проблема с какими-либо внутренними компьютерами, но на клиентском компьютере они получают следующую ошибку.

Источник исключения: Redemption.RDOSession Тип исключения: System.Runtime.InteropServices.COMException Сообщение об исключении: не выполнен вход в систему. Пожалуйста, войдите на первый целевой сайт исключения: Выход

public static void DeleteStoreFolders(string sStorePath)
        {
            RDOSession session = null;
            RDOPstStore RDOstore = null;
            try
            {
                _logger.LogDebug("init RDOSession");                
                session = RedemptionLoader.new_RDOSession();
                _logger.LogDebug("RDOSession created");
                _logger.LogDebug("Logging into store: " + sStorePath);
                RDOstore = session.LogonPstStore(sStorePath);
                _logger.LogDebug("Logged into store: " + sStorePath);
                foreach (RDOFolder folder in RDOstore.IPMRootFolder.Folders)
                {
                    _logger.LogDebug("Deleting folder " + folder);
                    folder.Delete();
                    _logger.LogDebug("Folder " + folder + " deleted");
                    if (folder != null)
                        Marshal.FinalReleaseComObject(folder);
                }
            }
            catch (Exception ex)
            {
                _logger.LogError("Unable to delete default folders. " + ex.StackTrace);
            }
            finally
            {
                if (session != null)
                {
                    session.Logoff();
                    Marshal.FinalReleaseComObject(session);
                }
                if (RDOstore != null)
                    Marshal.FinalReleaseComObject(RDOstore);
            }
        }

1 Ответ

0 голосов
/ 26 мая 2020

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

Кроме того, я бы предложил заменить методы FinalReleaseComObject на ReleaseComObject. Метод Marshal.FinalReleaseComObject освобождает все ссылки на Runtime Callable Wrapper (RCW), устанавливая его счетчик ссылок на 0. Это не совсем хорошая идея. Метод Marshal.ReleaseComObject уменьшает счетчик ссылок Runtime Callable Wrapper (RCW), связанный с указанным COM-объектом. Итак, если вы увеличиваете счетчик ссылок, вам нужно соответственно уменьшить его, но не обнулять!

...