You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Microsoft Graph API上传文件到SharePoint无报错但执行停滞问题求助

Microsoft Graph API上传文件到SharePoint无报错但执行停滞问题求助

我梳理下你的问题:你编写了一段调用Microsoft Graph API上传文件到SharePoint特定文件夹的代码,但是程序执行到var response = await _httpClient.PutAsync(requestUrl, content);这一行就停滞了,既不抛出异常也不继续执行,你已经配置了相关权限,现在需要找出问题原因并解决。

你当前使用的代码:

public async Task UploadFileAsync(string siteId, string driveId, string folderId, string fileName, byte[] fileContent, string accessToken)
{
    HttpClient _httpClient = new HttpClient();
    _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);

    try
    {
         var requestUrl = $"https://graph.microsoft.com/v1.0/sites/{siteId}/drives/{driveId}/items/{folderId}:/{fileName}:/content";


        using (var content = new ByteArrayContent(fileContent))
        {
            content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");

            var response = await _httpClient.PutAsync(requestUrl, content);

            if (response.IsSuccessStatusCode)
            {
                Console.WriteLine("File uploaded successfully.");
            }
            else
            {
                Console.WriteLine($"Failed to upload file. Status: {response.StatusCode}, Error: {await response.Content.ReadAsStringAsync()}");
            }
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Exception: {ex.Message}");
    }
}

已配置的权限:

已配置的Microsoft Graph权限截图

几个可能的排查方向,你可以逐一试试:

  • 同步调用导致的死锁问题:如果你的调用方是同步代码(比如在控制台Main方法里用UploadFileAsync().Wait()或者.Result),很可能因为异步上下文死锁导致停滞。建议把调用逻辑改成异步方式,比如将Main方法标记为async Task,用await UploadFileAsync(...)来调用。
  • HttpClient实例复用问题:你每次调用方法都新建一个HttpClient,这可能会导致TCP连接耗尽,进而卡住请求。建议复用一个全局的HttpClient实例,或者使用IHttpClientFactory来创建客户端,避免频繁创建销毁。
  • 权限有效性验证:虽然截图里显示配置了Files.ReadWrite.All等权限,但要确认这些权限是否已经获得管理员同意,并且你的access token中确实包含该权限范围。可以用jwt.ms解析你的token,检查scp或roles声明里有没有对应的权限。
  • 请求参数正确性:确认siteId、driveId、folderId这些参数是否完全正确,尤其是folderId必须是目标文件夹的ID(而非路径)。你可以先在Graph Explorer里手动调用这个接口,验证URL和参数是否能正常上传,排除参数错误的可能。
  • 网络/代理问题:如果你的运行环境有代理服务器,HttpClient可能没有配置代理导致请求无法发送。可以检查网络连接,或者给HttpClient添加代理配置。
  • 大文件传输问题:如果要上传的文件体积较大,直接用PutAsync上传可能会出现超时或传输停滞。Microsoft Graph推荐大文件使用分片上传(可恢复上传),你可以试试换成分片上传的方式测试。

备注:内容来源于stack exchange,提问作者Pooja Parmar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 09:22:57