我有一个用于内部目的的 Active Directory 同步应用程序,并将数据保存到通过 Graph API 从 Azure AD 馈送的 SQL 表中。除了其基本功能外,我们还使用 CSOM 更新自定义用户配置文件属性。但大多数情况下,在处理一些请求后,我们会收到错误 429,请求太多。
是否有任何批量更新选项可以在单个请求中更新一组(例如 500/1000 配置文件)自定义用户配置文件属性?请帮助我。如果还有其他选择,请提出建议。
提前致谢。
我有一个用于内部目的的 Active Directory 同步应用程序,并将数据保存到通过 Graph API 从 Azure AD 馈送的 SQL 表中。除了其基本功能外,我们还使用 CSOM 更新自定义用户配置文件属性。但大多数情况下,在处理一些请求后,我们会收到错误 429,请求太多。
是否有任何批量更新选项可以在单个请求中更新一组(例如 500/1000 配置文件)自定义用户配置文件属性?请帮助我。如果还有其他选择,请提出建议。
提前致谢。
原因:
当用户超出使用限制或请求频率限制时,SharePoint Online 会在短时间内限制来自该用户帐户的任何进一步请求。对于包括 CSOM 或 REST 调用在内的请求,SharePoint Online 返回 HTTP 状态代码 429(“请求过多”)或 503 (“服务器太忙”)并且请求将失败。
可能的解决方法:
注意:并非所有 Microsoft Graph API 都提供 Retry-After 标头。在这种情况下,有一个初始等待期,并随着每个 429 响应呈指数增长。
确保您在 azure 广告中的应用具有权限范围Sites.FullControl.All
并User.ReadWrite.All
授予管理员同意。还要在 xml 中检查相同的应用程序权限中的 FullControl。
尝试仅选择您在请求中需要的那些用户配置文件属性,并避免不必要的。
使用 JSON 批处理将多个请求组合成一个批处理请求。
尝试使用ExecuteQueryAsync()
而不是 ExecuteQuery() 或反之亦然或ExecuteQueryWithIncrementalRetry。
可选:尝试将 ExecuteQuery 调用与 Start-Sleep -Milliseconds 1000 语句一起使用,尤其是在循环中调用它时。
否则,请尝试使用这些powershell模块参考:
其他参考: