C#-Outlook VSTO-Exchange-“ GetFolderFromID”消息界面返回未知错误

时间:2018-07-12 09:30:51

标签: c# outlook vsto exchangewebservices outlook-addin

我的Outlook插件有问题。

首先非常简单地概述了工作流程。

该插件应从交换服务器(公用文件夹)获取文件夹列表。 用户可以选择此文件夹之一。 选定的公用文件夹的folderid将从IdFormat EwsId转换为HexEntryId,以随后获取Mapifolder。

然后,用户可以在Outlook中打开文件夹。这是通过设置“ this.Application.ActiveExplorer()。CurrentFolder”完成的。

完整代码:

/* _service is an instance of ExchangeService (Microsoft.Exchange.WebServices.Data) 
   The publicFolder is the selected public folder (type of Microsoft.Exchange.WebServices.Data.Folder)*/

AlternatePublicFolderId objAltPublicFoldId = new AlternatePublicFolderId(IdFormat.EwsId, publicFolder.Id.UniqueId);

AlternatePublicFolderId objId = (AlternatePublicFolderId)_service.ConvertId(objAltPublicFoldId, IdFormat.HexEntryId);

MAPIFolder outlookFolder = Application.Session.GetFolderFromID(objId.FolderId);

this.Application.ActiveExplorer().CurrentFolder = outlookFolder;

在大多数情况下,此方法效果良好。 但是某些用户在尝试打开文件夹时遇到错误。 该方法始终会抛出异常以获取mapifolder对象(Application.Session.GetFolderFromID(objId.FolderId);)。

错误消息是: “如果问题仍然存在,则消息界面返回未知错误,重启Outlook”

但是,这种情况再次发生在少数用户身上,但是一旦用户遇到此错误,他就有很大的机会在重新安装完整的Office安装程序之前,这个问题仍然存在。 到目前为止,我还没有找到其他解决此问题的方法,而且这个问题似乎无处不在。

到目前为止,我发现的所有内容是“ objId.FolderId”始终包含正确的值,这不仅会影响特定文件夹,还会影响所有文件夹。 但是用户可以在Outlook中手动打开该文件夹。

受影响人员的Outlook版本是2016和365。

受影响的程序集是“ Microsoft.Office.Interop.Outlook”。

对此程序集的引用具有以下属性:

说明:Microsoft Outlook 16.0对象库

文件类型:ActiveX

身份:{00062FFF-0000-0000-C000-000000000046} \ 9.6 \ 0 \ primary

路径:C:\ WINDOWS \ assembly \ GAC_MSIL \ Microsoft.Office.Interop.Outlook \ 15.0.0.0__71e9bce111e9429c \ Microsoft.Office.Interop.Outlook.dll

版本:9.6.0.0

我真的希望有人遇到同样的问题并找到解决方案。

现在,任何原因都可能是错误的根源。 Exchange Server,网络,Outlook,Microsoft.Office.Interop.Outlook程序集,已启用的缓存模式。

0 个答案:

没有答案