我正在尝试使用 VB.Net 和 Microsoft Graph API 将一个大文件 (> 4 MB) 上传到 Sharepoint 驱动器。出于测试目的,我的目标是驱动器的根。稍后我将指定一个子文件夹。这是我使用的代码:
Public Shared Async Function UploadToFolder(ByVal driveId As String) As Task(Of DriveItem)
Dim resultDriveItem As DriveItem = Nothing
Try
Using fileStream As New IO.FileStream(fileLocation, IO.FileMode.Open, IO.FileAccess.Read)
Dim uploadSession As UploadSession = Await GraphClient.Drives(driveId).Root.ItemWithPath("test.pdf").CreateUploadSession().Request().PostAsync()
Dim maxSlice As Integer = 320 * 1024
Dim largeFileUpload As New LargeFileUploadTask(Of DriveItem)(uploadSession, fileStream, maxSlice)
Dim uploadResult As UploadResult(Of DriveItem) = Await largeFileUpload.UploadAsync() 'error occurs here
resultDriveItem = uploadResult.ItemResponse
End Using
Catch ex As Exception
Stop
End Try
Return resultDriveItem
End Function
不幸的是,Await largeFileUpload.UploadAsync() 发生错误。当我查看错误消息时,它没有多大意义:
Code: generalException
Message: An error occurred sending the request.
最重要的是,堆栈跟踪也对我没有任何帮助。
bij Microsoft.Graph.SimpleHttpProvider.<SendRequestAsync>d__13.MoveNext()
--- Einde van stacktracering vanaf vorige locatie waar uitzondering is opgetreden ---
bij System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
bij System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bij System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
bij Microsoft.Graph.SimpleHttpProvider.<SendAsync>d__10.MoveNext()
--- Einde van stacktracering vanaf vorige locatie waar uitzondering is opgetreden ---
bij System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
bij System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bij System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
bij Microsoft.Graph.UploadSliceRequest`1.<SendRequestAsync>d__18.MoveNext()
--- Einde van stacktracering vanaf vorige locatie waar uitzondering is opgetreden ---
bij System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
bij System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bij System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
bij Microsoft.Graph.UploadSliceRequest`1.<PutAsync>d__17.MoveNext()
--- Einde van stacktracering vanaf vorige locatie waar uitzondering is opgetreden ---
bij System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
bij System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bij System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
bij Microsoft.Graph.LargeFileUploadTask`1.<UploadSliceAsync>d__14.MoveNext()
--- Einde van stacktracering vanaf vorige locatie waar uitzondering is opgetreden ---
bij System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
bij System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bij System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
bij Microsoft.Graph.LargeFileUploadTask`1.<UploadAsync>d__16.MoveNext()
--- Einde van stacktracering vanaf vorige locatie waar uitzondering is opgetreden ---
bij System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
bij System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bij System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
bij Office365.Office365.VB$StateMachine_12_UploadToFolder.MoveNext() in C:\Note-books\Projects 2013\SharedTools\Tools\Office365\Office365.vb:regel 294
问题是我可以上传一个较小的文件(使用 PutAsync)或做其他事情(创建文件夹,列出文件夹内容,...)。因此,我确定 GraphClient 的身份验证设置正常。
我究竟做错了什么?有人可以帮忙吗?
斯特凡