У меня есть приложение UWP, которое загружает файл в S3 Bucket, используя AWS SDK для. NET (высокоуровневый API), который является TransferUtility.
Этот API очень хорошо работает, когда я загружаю небольшой размер записываемых файлов, но когда я загружаю большие файлы, файл, кажется, не загружается, и выдает следующие ошибки: Произошла ошибка при отправке запроса. // в некоторых тестах Задача была отменена.
Чтобы исправить эту ошибку, я сослался на несколько ресурсов из inte rnet, но не смог получить решение. Я также попытался добавить различные параметры в TransferUtilityUploadRequest, например PartSize, чтобы определить размер составного сегмента, добавил TransferUtilityConfig в качестве дополнительного параметра для TransferUtility, настроил различные RegionEndPoints, используемые при отправке запроса на загрузку. Добавление этих изменений не имело никакого значения при загрузке больших файлов в корзину s3.
Ниже приведен фрагмент кода, который я использую
int MB_SIZE = (int)Math.Pow(2, 20);
var s3Client = new AmazonS3Client(objUploadRecording.AccessKeyId, objUploadRecording.SecretAccessKey,objUploadRecording.Token, region);
var transferUtilityConfig = new TransferUtilityConfig
{
// Use 5 concurrent requests.
ConcurrentServiceRequests = 5,
// Use multipart upload for file size greater 1 MB.
MinSizeBeforePartUpload = 1 * MB_SIZE,
};
using (var transferUtility = new TransferUtility(s3Client, transferUtilityConfig))
{
var uploadRequest = new TransferUtilityUploadRequest
{
BucketName = objUploadRecording.BucketName,
Key = objUploadRecording.S3Filename,
FilePath = objUploadRecording.FilePath,
// Set size of each part for multipart upload to 1 MB
PartSize = 1 * MB_SIZE
};
uploadRequest.UploadProgressEvent += OnUploadProgressEvent;
CancellationToken cancellationToken = default(CancellationToken);
try
{
await transferUtility.UploadAsync(uploadRequest, ancellationToken);
}
catch (Exception ex)
{
LoggingServices.Instance.WriteLine<RecordingListPage>("AWS Upload
Error: " + ex.Message.ToString(), MetroLog.LogLevel.Error);
}
Может кто-нибудь подсказать мне, где я делаю ошибку или какие дополнительные параметры мне придется добавить сюда, чтобы эта работа работала?