getAttachmentContentAsync中的异常,由于不活动,无法捕获

问题描述 投票:0回答:1

使用office-js,我正在开发一个Outlook加载项,它包含在一个任务窗格中,在该窗格中,我需要获取有关当前项目(电子邮件)的所有信息(基本信息,正文和附件),以将其发送到Web服务。我正在使用Angular 8,并使用以下命令引用API:<script type="text/javascript" src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js"></script>

我可以使用功能Office.item.body.getAsync(options, callbackFunction)来获取身体,我可以使用以下方式获取附件Office.item.getAttachmentContentAsync(item.attachments[i], options, callbackFunction)

问题出在我在同一封邮件中打开Outlook Web几分钟后。之后,当我执行加载项时,对Office.item.getAttachmentContentAsync的调用开始失败,并在控制台中写入错误:Uncaught (in promise) TypeError: Failed to fetch。主要问题是我无法捕获异常,因此我的加载项将永远等待,因为从未调用过callbackFunction,并且添加了周围的try catch无效,因为错误似乎出在office-js库的内部承诺。请注意,即使在这种情况下,使身体恢复正常的调用也没有问题。

正如我使用Chrome工具所看到的,对Office.item.getAttachmentContentAsync的正常调用行为是以下请求之一:https://attachment.outlook.live.net/owa/MSA:[...]/service.svc/s/GetFileAttachment?id=[...]返回200状态代码。

但是,当会话“过期”时,对https://attachment.outlook.live.net/owa/MSA:[...]/service.svc/s/GetFileAttachment?id=[...]的请求将302返回到https://outlook.live.com/owa/MSA:[...]/service.svc/s/GetAttachmentDownloadToken?redirect=[...],并返回440登录超时。

我想知道是否有什么方法可以避免该错误(检查会话是否已过期,强制刷新会话等),或者是否有任何方法可以捕获该错误(避免添加-以便卡住),以便将问题通知用户。

callbackFunction非常简单:

private static callbackFunction(asyncResult: Office.AsyncResult<any>){
    if (asyncResult.status == Office.AsyncResultStatus.Succeeded){
        [...]
    }
    else{
        //Never called
    }
}

编辑:我刚刚意识到,使用Android的Outlook中的加载项,使用相同的代码无法从Office.item.getAttachmentContentAsync获得响应,但是我确实获得了电子邮件的正文内容。在Outlook Web中,刷新页面临时可以解决此问题,但是在Android版Outlook中,重新启动应用程序无济于事。我不确定错误是否与Android中的440登录超时相同,因为我无法在此处调试加载项。

Edit2:在Windows的Outlook Desktop中,我无法重现此问题,它工作正常。

office-js outlook-web-addins
1个回答
0
投票

感谢您报告有关getAttachmentContentAsync的问题。我们可以重现所报告的问题。它已被放入我们的积压中。很遗憾,我们目前没有时间表可供分享

© www.soinside.com 2019 - 2024. All rights reserved.