2016-02-11 100 views
0

我的代码调用OneNote API以检索O365 SharePoint网站中的笔记本列表。我们得到的承载标记,设置HTTP认证头,并发出GET请求:OneNote API在查询/笔记/笔记本时返回HTTP 500

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 - 这里有一个从今天:

解析一个URL
X-CorrelationId: dbcff391-6767-451c-a011-05fb8d2a0e32 

的FromUrl API调用 - >的SharePoint SITEID,我们现在做一次缓存很长一段时间,因为该映射几乎是s tatic。然而,站点中的笔记本可能会随着用户创建/删除/重命名而经常更改,因此我们需要每次都获取最新的数据。 OneNote API从根本上不稳定?


编辑

我们注意到,这可能是该用户的OneDrive为企业的可用性。我相信这些OneDrives是SharePoint文档库,在用户首次访问时按需创建。对于以前从未访问过OneDrive的用户,我们似乎获得了500条回复,但对于拥有此类用户的用户来说,这是成功的。从表面上看,这似乎很清楚:用户必须在OneNote API调用之前访问过他们的OneDrive,否则它将返回500.

但是,这在租约之间似乎不一致:我们有一个O365租约,不是这种情况,即使用户没有OneDrive,API也会成功返回。所以我的问题是:1)用户的OneDrive的可用性是否有所不同?2)为什么租户之间会有所不同?


编辑#2 这已被证实由微软开发的支持上报工程师 - 该API需要用户已经拥有了OneDrive。这是一个错误,因为API调用应将OneNotes列在外部SharePoint文档库中,因此不应关心用户是否为其调配了OneDrive。我知道他们正在积压修复...

回答

0

请确保您在API调用中使用的站点仍然有效(您可以通过在此站点URL上运行FromUrl调用并跨越使用您使用的ID检查网站集和网站ID)。另外,请确保您要调用该API的用户对该站点拥有访问权限。

+0

SiteId和SiteCollectionId都很好 - 调用之间没有任何变化。 –