使用 MS Graph API 的 Sharepoint 间歇性连接中断

Intermittent connection drops using MS Graph API for Sharepoint

自 2020 年 2 月 6 日以来,我们与客户端 Sharepoint 的接口(使用 MSGraph API)在尝试使用 @microsoft.graph.downloadUrl.

下载文件时出现间歇性连接中断

我们的应用程序向提供的 url 发出 HTTP GET 请求(使用 MSXML2.ServerXMLHTTP.6.0)。然后在一定时间后会抛出描述 "The connection with the server was terminated abnormally" 的错误。无状态码,无响应内容

使用任何浏览器也会发生这种情况(通过将 downloadUrl 复制到地址栏并按回车键)。 Chrome,下载文件(假设 url 指向一个 .jpg 文件),会说 "Failed - Network error".

使用 Curl 和这个批处理脚本可以重现错误(如果它是一个全局问题)。

@echo off

FOR /L %%A IN (1,1,%1) DO (
    echo.
    echo Attempt: %%A%

    rem Writing output into a file, extension is not really important.
    curl --output "output.jpg" %2
)

可以这样称呼test.bat <no of tries> "<@microsoft.graph.downloadUrl>"。添加了一个日志 here,尝试 13、15 和 18 得到错误。

我不太确定这里会发生什么。我研究了错误消息,基本上发生的事情是套接字意外掉线。我在想也许我们的请求达到了配额,但在这些情况下,MSGraph returns 是一条正确的错误消息,并且没有后台应用程序使用这些链接轰炸 MSGraph。例如,这些链接用于在浏览器中显示 pdf 预览 window。

有什么想法可能是错的或者我可以去哪里寻求帮助吗?

为使用答案字段道歉,但我只有 35 个声誉,所以我无法添加评论,我想添加我们的经验,以防影响其他人。

我们遇到了与 OP 提到的大约同一日期开始的相同问题。我们使用相同的代码已有大约 2 年半的时间,而且从未有过任何问题,但现在用户在下载报告时遇到了问题。这些报告通过 MSGraph API 下载多个 pdf,然后将它们组合成一个 pdf。我注意到,如果特定报告中只有几个 pdf 文件,那没问题。如果我调试会话并以较慢的速度遍历文件(即我在每个文件后数到 3)就没问题。此外,用户有时可以通过重试来绕过它,也许第 4 次或第 5 次尝试它可能会成功。

与 OP 一样,我认为我们达到了配额,但错误是 "an existing connection was forcibly closed by the remote host" 而不是 "HTTP status code 429 (Too many requests)"。

Sharepoint 在节流时通常 return 正确的错误代码 429 或 503。丢弃套接字通常会遇到有问题的代码路径。您可以考虑提交支持票。有可能有人可以查看特定问题。我试图重现重复下载。但我做不到。因此错误可能会在特定条件下重现。

我们相信我们已经找到了这个问题的根本原因 - 所有观察它的人都可以告诉我们情况是否好转了吗?