我有一个 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。文件未上传,异常中没有捕获任何错误,控制台中也没有记录任何错误窗户。
有人对发生的事情有任何想法吗?
参见:HttpClient.PostAsync 使用退出代码 0 来淘汰应用程序
问题是
PutAsync
,您正在从非异步方法调用该方法,程序将在异步方法有机会完成之前终止。请参阅上面的来源以获取要调整的代码片段。
请告诉我这是否有帮助。