我的代码调用 OneNote API 来检索 O365 SharePoint 网站中的笔记本列表。我们得到一个不记名令牌,设置 HTTP auth 标头并发出 GET 请求:
https://www.onenote.com/api/v1.0/myOrganization/siteCollections/1165b017-ce4b-4b01-9e0c-d1ed91827b33/sites/99d8f75e-c7eb-4de1-a304-86f567c1ce99/notes/notebooks
这通常有效,但昨天它间歇性地返回一个 HTTP 500 响应,今天它每次都返回一个 500 响应:(
我们捕获响应中的所有 HTTP 标头,包括 X-CorrelationId - 这是今天的一个:
X-CorrelationId: dbcff391-6767-451c-a011-05fb8d2a0e32
解析 URL -> SharePoint SiteId 的 FromUrl API 调用,我们现在进行一次并缓存很长时间,因为该映射几乎是静态的。然而,站点中的笔记本会随着用户创建/删除/重命名它们而经常更改,因此我们每次都需要获取新数据。OneNote API 根本就不稳定?
编辑
我们注意到这可能是用户的 OneDrive for Business 的可用性。我相信这些 OneDrives 是隐藏的 SharePoint 文档库,在用户首次访问时按需创建。对于以前从未访问过 OneDrive 的用户,我们似乎收到了 500 条回复,但对于曾经访问过 OneDrive 的用户来说却是成功的。从表面上看,这似乎很清楚:用户必须在调用 OneNote API 之前访问过他们的 OneDrive,否则返回 500。
但是,这似乎在租户之间不一致:我们有一个 O365 租户,但情况并非如此,即使用户没有 OneDrive,API 也会成功返回。所以我的问题是:1) 用户的 OneDrive 的可用性是否会有所不同,以及 2) 为什么这会因租约而异?
编辑#2 这已由 Microsoft 开发人员支持升级工程师确认 - API 要求用户已经拥有 OneDrive。这是一个错误,因为 API 调用应该在外部 SharePoint 文档库中列出 OneNotes,因此不应该关心用户是否为他们配置了 OneDrive。我知道他们要解决的问题已经积压...