Скачивание файла из AWS S3 в Xamarin iOS зависает в основном - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь загрузить XML-файл размером 85 МБ в свое приложение Xamarin для iPad для iPad.Иногда загрузка завершается успешно, но в других случаях загрузка зависает где-то без каких-либо ошибок.Ход выполнения останавливается.

Версия AWS SDK:

AWSSDK.S3 3.3.20.4

AWSSDK.Core 3.3.24.8

Я пробовал оба метода 1- TransferUtility2- GetObject.Вот мой код:

            var  clientRequest = new AmazonS3Client(AWSAccessKey,
                                    AWSSecretKey,
                                        Amazon.RegionEndpoint.USEast1);
            try
            {
                GetObjectRequest request = new GetObjectRequest
                {
                    BucketName = AWSBucketName,
                    Key = Path + "File1.xml"
                };
                using (GetObjectResponse response = await clientRequest.GetObjectAsync(request))
                {
                 response.WriteObjectProgressEvent += displayDownloadProgress;
                 await response.WriteResponseStreamToFileAsync(destPath, false);                        
                }
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered ***. Message:'{0}' when writing an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
            }

Я попробовал оба метода по одному.

            var utility = new TransferUtility(cas.AWSAccessKey,
                                    cas.AWSSecretKey,
                                    Amazon.RegionEndpoint.USEast1);

            TransferUtilityDownloadRequest dr = new TransferUtilityDownloadRequest();
            dr.BucketName = AWSBucketName;
            dr.Key = Path + "File1.xml";
            dr.FilePath = destPath;
            dr.WriteObjectProgressEvent += displayDownloadProgress;
            await utility.DownloadAsync(dr);



            public void displayDownloadProgress(object sender, WriteObjectProgressArgs args)
            {
                Debug.WriteLine("Download Progress: " + (args.PercentDone));

                InvokeOnMainThread(() =>
                {
                    BTProgressHUD.ShowContinuousProgress("Download Progress: " + args.PercentDone.ToString() + "%", ProgressHUD.MaskType.Gradient);
                });

                if (args.PercentDone >= 100)
                {
                    BTProgressHUD.Dismiss();
                }
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...