Tus.io WebException (ошибка сервера 460) во время обычной загрузки
Я использую Tus.io (возобновляемую библиотеку загрузки файлов) .Net Client для загрузки файлов на веб-сервер.
Вот фрагмент кода:
Dim testfile = My.Computer.FileSystem.GetFileInfo("..\..\test.pptx")
Dim tc As New TusClient.TusClient()
AddHandler tc.Uploading, Sub(bytesTransferred As Integer, bytesTotal As Integer)
Dim perc As Decimal = bytesTransferred / bytesTotal * 100.0
Console.WriteLine("Up {0:0.00}% {1} of {2}", perc, bytesTransferred, bytesTotal)
End Sub
Dim fileURL = tc.Create(ServerURL, testfile)
tc.Upload(fileURL, testfile)
Функции загрузки работают хорошо для небольших файлов, например, 500 КБ, но не для файлов размером 3 МБ или более. Выдает исключение после передачи 100% данных (согласно%, указанному в Uploading Event).
Исключение: WebException
Сообщение: удаленный сервер возвратил ошибку: (460) Неизвестно.
Содержание ответа: "Заголовок Upload-Checksum не совпадает с контрольной суммой файла"
Статус: ProtocolError {7}
Дайте мне знать, если какая-либо необходимая информация отсутствует здесь. Любое решение или быстрый обходной путь будет высоко оценен. Благодарю.
PS. Я не смог добавить тег Tus.io из-за ограниченных прав.
1 ответ
Клиентская библиотека tus.io .NET включает заголовок "контрольной суммы", который заставляет клиента выдавать эту ошибку. Самое простое решение сейчас - удалить или закомментировать следующую строку, перекомпилировать, и вам будет хорошо.
TusClient.cs
line 150: request.AddHeader("Upload-Checksum", "sha1 " + Convert.ToBase64String(sha1hash));