Я использую последнюю версию официального пакета Amazon S3 SDK (1.0.14.1) для создания инструмента резервного копирования.Пока все работает правильно, если размер файла, который я загружаю, меньше 5 МБ, но когда любой из файлов превышает 5 МБ, загрузка завершается неудачно со следующим исключением:
System.Net.WebException: запрос был прерван: запрос был отменен.---> System.IO.IOException: Невозможно закрыть поток, пока не будут записаны все байты.at System.Net.ConnectStream.CloseInternal (Boolean internalCall, Boolean aborting) --- Конец трассировки стека внутренних исключений --- в Amazon.S3.AmazonS3Client.ProcessRequestError (String actionName, запрос HttpWebRequest, исключение WebException, запрос HttpWebResponse errorResponr String, WebHeaderCollection & respHdrs, Тип t) в Amazon.S3.AmazonS3Client.Invoke [T] (S3Request userRequest) в Amazon.S3.AmazonS3Client.PutObject (запрос PutObjectRequest) в BackupToolkit.S3Module.Un StringFileFileName:\ code \ AutoBackupTool \ BackupToolkit \ S3Module.cs: строка 88 в BackupToolkit.S3Module.UploadFiles (String sourceDirectory) в W: \ code \ AutoBackupTool \ BackupToolkit \ S3Module.cs: строка 108
1006* Примечание : 5 МБ - это примерно граница сбоя, она может быть немного ниже или даже выше
Я предполагаю, что время соединения истекло, и поток автоматически закрывается до завершения загрузки файла,
Я пытался найти способ установить длительное время ожидания (но я не могу найти параметр ни в AmazonS3
, ни в AmazonS3Config
).
Любые идеи о том, как увеличить время ожидания (например, настройки для всего приложения, которые я могу использовать) или оно не связано с проблемой времени ожидания?
Код:
var s3Client = AWSClientFactory.CreateAmazonS3Client(AwsAccessKey, AwsSecretKey);
var putObjectRequest = new PutObjectRequest {
BucketName = Bucket,
FilePath = sourceFileName,
Key = destinationFileName,
MD5Digest = md5Base64,
GenerateMD5Digest = true
};
using (var upload = s3Client.PutObject(putObjectRequest)) { }