使用HttpClient将文件发送到SharePoint 365驱动器

问题描述 投票:0回答:1

我有一个 C# 控制台应用程序,我正在尝试将文件上传到位于 SharePoint Online 的驱动器中。以下是我目前拥有的代码。

 var httpClient = new HttpClient();
 var response = httpClient.PostAsync(tokenEndpoint, content).Result;
 var token = response.Content.ReadAsStringAsync().Result;
 var accessToken = (JsonConvert.DeserializeObject<AccessToken>(token)).access_token;
 var fileName = @"c:\data\sample.txt";
 var fileNameEndpoint = @"https://graph.microsoft.com/v1.0/drives/{driveID}/root:/General/sample.txt:/content";
 using (HttpClient client = new HttpClient())
 {
     using (FileStream fileStream = File.OpenRead(fileName))
     {
         var fileContent = new StreamContent(fileStream);
         content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");

         client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
         try
         {
             var response1 = await client.PutAsync(fileNameEndpoint, fileContent);
             if (response1.IsSuccessStatusCode)
             {
                 Console.WriteLine("File uploaded successfully!");
             }
             else
             {
                 Console.WriteLine($"Error: {response1.StatusCode} - {response1.ReasonPhrase}");
             }
         }
         catch (Exception e)
         {
             Console.WriteLine(e);
             throw;
         }
     }
 }

我得到了一个令牌,但我的问题是,当调用 PutAsyc 时,代码只是停止并返回代码 0。文件未上传,异常中没有捕获任何错误,控制台中也没有记录任何错误窗户。

有人对发生的事情有任何想法吗?

c# http sharepoint
1个回答
0
投票

参见:HttpClient.PostAsync 使用退出代码 0 来淘汰应用程序

还有:C# HttpClient - PutAsync

问题是

PutAsync
,您正在从非异步方法调用该方法,程序将在异步方法有机会完成之前终止。请参阅上面的来源以获取要调整的代码片段。

请告诉我这是否有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.