OneDrive API - 在尝试获取文件内容时,大多数时候都找不到文件

时间:2016-12-09 17:10:37

标签: onedrive

我们收到了大量未找到文件的错误。在调用API时,我们很难获得该文件。我们在生产中遇到这个问题,它正在影响客户。这是昨天早些时候开始几个月来我们一直称这个api没有问题。这是我们正在使用的API。

https://TENANT-my.sharepoint.com/_api/v2.0/drives/DRIVE_ID/items/FILE_ID/content

使用Postman,响应如下。本文档已正确共享,并已持续数月。我们没有改变。

抱歉,出了点问题 抱歉,您无法访问此文档。请联系与您分享的人。 技术细节

解决Microsoft SharePoint Foundation的问题。 相关ID:fb6bbf9d-d0d6-2000-cdd6-ef99686d513f

日期和时间:2016年12月9日上午9:13:02

3 个答案:

答案 0 :(得分:2)

虽然这并没有解释API破坏的方式或原因,但在撰写本文时,OneDrive尚未承认或修复原始问题,我们的解决方案是使用@contentDownloadUrl的值来自文件并在没有授权标题的情况下调用该URL。

目前的文件说明:

"经过预验证的下载网址仅在很短的时间内(几分钟)有效,并且不需要下载授权标题。"

这不应该说"不要求",但"不得包括",因为它会更清楚。我向他们的文档提出了拉取请求。

答案 1 :(得分:0)

使用带有ItemNotFound错误的C#/ .NET SDK和“Microsoft.Graph.ServiceException”时,我们遇到了同样的问题。这是在MS在12/7上对OneDrive进行更新之后开始的。我们与O365 / OneDrive团队一起开了一张支持票。他们表示他们不知道推出的任何问题,并说我们需要联系API支持。奇怪的是它有时会起作用,可能是100次尝试中的2次。列出文件和上传仍然有效,但下载失败。

这是我们到目前为止所尝试的内容:

  • 来自GitHub的最新示例项目,同样的错误
  • 检查SharePoint中的设置,查找可能影响此设置但未找到任何内容的新设置
  • 在Azure AD中重新注册应用
  • Azure AD中的应用程序权限增加

失败的代码行是:

var stream = await this.oneDriveClient.Drive.Items [item.Id] .Content.Request()。GetAsync();

答案 2 :(得分:0)

问题在于身份验证。这段代码似乎解决了这个问题:

            var adalAuthProvider = new AdalAuthenticationProvider(
                    this.AadClientId,
                    this.AadReturnUrl);

            this.oneDriveClient = new OneDriveClient(this.AadTargetUrl + "/_api/v2.0", adalAuthProvider, new HttpProvider(new HttpClientHandler { AllowAutoRedirect = true }, true));
            authTask = adalAuthProvider.AuthenticateUserAsync(this.AadTargetUrl);

            try
            {
                await authTask;
            }