[英]Microsoft Graph HttpProvider Error on File Upload
我有一個 PDF 我需要使用 Microsoft Graph 上傳到 SharePoint 文檔庫。 我的代碼已經成功完成了幾個月,直到它在 4 月 17 日停止工作,我們的 SharePoint 似乎沒有任何變化,當然也不是我的代碼。
我有一個執行上傳的 function:
public static async Task<DriveItem> UploadLargeFile(string localFilePath, string spPath)
{
DriveItem uploadedFile = null;
using (Stream fileStream = System.IO.File.OpenRead(localFilePath))
{
UploadSession uploadSession = await GraphAPIConnection.GraphClient.Sites[siteid].Drives[driveid].Root.ItemWithPath(spPath).CreateUploadSession().Request().PostAsync();
List<Exception> exceptions = new List<Exception>();
if (uploadSession != null)
{
//Chunk size must be divisible by 320KiB, our chunk size will be slightly more than 1MB
int maxSizeChunk = (320 * 1024) * 4;
ChunkedUploadProvider uploadProvider = new ChunkedUploadProvider(uploadSession, GraphAPIConnection.GraphClient, fileStream, maxSizeChunk);
IEnumerable<UploadChunkRequest> chunkRequests = uploadProvider.GetUploadChunkRequests();
byte[] readBuffer = new byte[maxSizeChunk];
//Using one session, upload each chunk of the file individually
foreach (UploadChunkRequest request in chunkRequests)
{
try
{
UploadChunkResult result = await uploadProvider.GetChunkRequestResponseAsync(request, readBuffer, exceptions);
if (result.UploadSucceeded)
{
uploadedFile = result.ItemResponse;
}
}
catch (Exception ex)
{
Debug.WriteLine("message: " + ex.Message + "\t\ttrace: " + ex.StackTrace);
}
}
}
}
return uploadedFile;
}
我的捕獲產生以下 output:
消息:代碼:generalException 消息:發送請求時發生錯誤。 跟蹤:在 Microsoft.Graph.HttpProvider.d__19.MoveNext() --- 從先前引發異常的位置結束堆棧跟蹤 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在 System.Runtime。 CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.Graph.HttpProvider.d__18.MoveNext() --- 從先前拋出異常的位置結束堆棧跟蹤---在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任務)在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任務任務)在 Microsoft.Graph.UploadChunkRequest.d__17.MoveNext() --- 在 System.Runtime 中從先前引發異常的位置結束堆棧跟蹤。 CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.Graph.UploadChunkRequest.d__16.MoveNext() --- 從 p 結束堆棧跟蹤拋出異常的過往位置 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 Microsoft.Graph.ChunkedUploadProvider.d__17.MoveNext() - -- 從先前引發異常的位置結束堆棧跟蹤 --- 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 System.Runtime.CompilerServices 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) .TaskAwaiter`1.GetResult() 在 MyNameSpace.SharePointUploader.d__9.MoveNext() 在 MyDir\SharePointUploader.cs:line 173
如你看到的,
uploadProvider.GetChunkRequestResponseAsync(request, readBuffer, exceptions)
導致以下產生錯誤:
在 Microsoft.Graph.HttpProvider.d__19.MoveNext()
我仔細檢查了 function 的所有輸入是否有效; 幾個月來,代碼也沒有任何變化。 我嘗試了第三方 ETL 軟件,並且能夠將 PDF 上傳到我想要的文件夾 - 該軟件也是使用 Microsoft Graph 構建的。
這就是我難過的地方。 我如何進一步調試它以確定 HttpProvider 拋出錯誤的確切原因?
找到了解決方法。 分兩部分回答。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.