【问题标题】:Office 365 unified api (preview) group files returning 500 internal server error only in some tenantsOffice 365 统一 api(预览)组文件仅在某些租户中返回 500 内部服务器错误
【发布时间】:2015-10-19 09:57:13
【问题描述】:

我已成功使用 Office 365 统一 API 将我的多租户 SaaS 应用程序链接到 Office 365 并返回统一组的文件。我正在使用 ADAL 库和统一 API nuget 包来实现这一点。根据统一 API 预览版本说明,我们已在 Azure AD 应用程序中请求以下权限(以及其他权限) - Group.Read.All、Group.ReadWrite.All、Sites.Read.All、Sites.ReadWrite.All。我很欣赏 ReadWrite 使 Read 变得不必要,但我们添加了这两个集合以尝试保护自己免受一些可能的预览问题的影响。

现在我们有一个租户可以读取他们的组但不能访问组中的文件。这在其他租户中运行良好。

我们在调试代码的时候,发现这行抛出了空引用异常:

IPagedCollection<IItem> files = await _client.groups.GetByID(groupId).files.ExecuteAsync()

然后我们将其分开以检查该组是否可以正常接收:

IGroup group = await _client.groups.GetById(groupId).ExecuteAsync()

因此,我们使用 HTTP 客户端发出了相同的文件请求,以便我们可以从服务器获得更详细的响应:

https://graph.microsoft.com/beta/myOrganization/groups/[group_id_here]/files

这将返回状态代码 500 - 内部服务器错误,内容是“对象引用未设置为对象实例”。不是很有帮助!

我看到一些关于人们遇到类似问题的帖子,权限设置不正确,但在我的情况下,我不明白为什么检索统一组文件的调用在一个 Office 365 租户中可以正常工作,而在另一个租户中却不行当它们的权限由同一个 Azure AD 应用程序控制并因此完全相同时。

这些组都是在 Office 365 Web 应用程序中创建的,而不是通过统一 API,所以这不是一个因素。

Office 365 中是否有管理员可以用来限制对统一 api 请求的访问的权限?我在文档中看不到任何内容,但即使是这种情况,我也希望得到未经授权的响应,而不是内部服务器错误。

任何想法都非常感谢!

【问题讨论】:

    标签: c# azure office365 azure-active-directory office365api


    【解决方案1】:

    很抱歉这个问题。所以我相信我们不小心提前推动了一项变更,而您在我们恢复变更之前成功地做到了这一点。我们正在通过 OneDrive API 更新对文件的访问,这将导致重大更改。您可以在此处阅读更多信息,以及我们计划在 10 月 19 日更新的 /beta 端点上的突破:http://dev.office.com/blogs/Update-2-on-Office-365-unified-API。更新后,访问文件将需要以下语法: https://graph.microsoft.com/stagingBeta/microsoft.com/groups/groupId/drive/root/children

    注意:我们需要为此生成一个新的客户端库。您当前使用的将因此更新而中断。我们希望在此服务更新后尽快推出新的客户端库。

    现在我不确定这是否正是您偶然发现的问题,或者这是否是另一个问题。你能再试一次吗(在我们在太平洋夏令时间 10 月 19 日中午 12 点进行更新之前)?

    希望对你有帮助,

    【讨论】:

    • 我认为这绝对是问题所在,谢谢 Dan。关于更新的客户端库的任何消息?就目前而言,在新库发布之前,我们无法继续开发(如果新库即将推出,则无需手动创建所有其余调用并解析响应)。谢谢。
    猜你喜欢
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 2018-09-30
    • 2021-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多