如何处理与网络断开连接时引发的AmazonServiceException

如何处理与网络断开连接时引发的AmazonServiceException,exception,asynchronous,amazon-s3,xamarin,Exception,Asynchronous,Amazon S3,Xamarin,我正在使用AWS mobile SDK for Xamarin(),当我使用GetObjectAsync()方法从我的S3存储桶获取文件时遇到了一个问题。我的代码: private async Task<string> GetObjectFromAmazonS3(S3Object s3Object, string fileContent, string bucketName) { AWSCredentials credential = new BasicAWS

我正在使用AWS mobile SDK for Xamarin(),当我使用GetObjectAsync()方法从我的S3存储桶获取文件时遇到了一个问题。我的代码:

private async Task<string> GetObjectFromAmazonS3(S3Object s3Object, string fileContent, string bucketName)
    {
        AWSCredentials credential = new BasicAWSCredentials(Constants.S3AccessKey, Constants.S3SecretKey);

        _amazonS3Client = new AmazonS3Client(credential, Amazon.RegionEndpoint.EUCentral1);

        _amazonS3Client.ExceptionEvent += ClientExceptionHandler;

        GetObjectRequest getObjectRequest = new GetObjectRequest
        {
            BucketName = bucketName,
            Key = s3Object.Key
        };

        GetObjectResponse getObjectResponse = await _amazonS3Client.GetObjectAsync(getObjectRequest);

        using (Stream responseStream = getObjectResponse.ResponseStream)
        using (StreamReader reader = new StreamReader(responseStream))
        {
            fileContent = reader.ReadToEnd();
        }

        Logger.Log(Logger.Category.Debugging, "Download S3 Objects to the phone", "Get object " + s3Object.Key + " successfully");

        return fileContent;
    }
私有异步任务GetObjectFromAmazonS3(S3Object S3Object,string fileContent,string bucketName)
{
AWSCredentials Credentials=新的基本凭证(Constants.S3AccessKey,Constants.S3SecretKey);
_amazonS3Client=新的amazonS3Client(凭证,Amazon.RegionEndpoint.EUCentral1);
_amazonS3Client.ExceptionEvent+=ClientExceptionHandler;
GetObjectRequest GetObjectRequest=新建GetObjectRequest
{
BucketName=BucketName,
Key=s3Object.Key
};
GetObjectResponse GetObjectResponse=await_amazonS3Client.GetObjectAsync(getObjectRequest);
使用(Stream responseStream=getObjectResponse.responseStream)
使用(StreamReader=新StreamReader(responseStream))
{
fileContent=reader.ReadToEnd();
}
Logger.Log(Logger.Category.debug,“将S3对象下载到手机”,“获取对象”+s3Object.Key+“成功”);
返回文件内容;
}
问题是,当应用程序等待GetObjectAsync()方法的响应时,手机与网络断开连接,然后我得到一个异常:

2015-03-03T07:23:27.582Z,Debugging,UnhandledException(Android),Amazon.Runtime.AmazonServiceException: A WebException with status NameResolutionFailure was thrown. 
---> System.Net.WebException: Error: NameResolutionFailure 
==>   at System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) [0x00000] in <filename unknown>:0  
==>   at System.Threading.Tasks.TaskFactory`1[System.Net.WebResponse].InnerInvoke (System.Threading.Tasks.TaskCompletionSource`1 tcs, System.Func`2 endMethod, IAsyncResult l) [0x00000] in <filename unknown>:0  
==> --- End of stack trace from previous location where exception was thrown --- 
==>   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x00000] in <filename unknown>:0  ==>   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[System.Net.WebResponse].GetResult () [0x00000] in <filename unknown>:0
2015-03-03T07:23:27.582Z,调试,未处理异常(Android),Amazon.Runtime.AmazonServiceException:引发状态为NameResolutionFailure的WebException。
--->System.Net.WebException:错误:NameResolutionFailure
==>在System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)[0x00000]中:0
==>在System.Threading.Tasks.TaskFactory`1[System.Net.WebResponse].InnerInvoke(System.Threading.Tasks.TaskCompletionSource`1 tcs,System.Func`2 endMethod,IAsyncResult l)[0x00000]中:0
==>---引发异常的上一个位置的堆栈结束跟踪----
==>在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()[0x00000]中:0==>在System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[System.Net.WebResponse].GetResult()[0x00000]中:0
我的应用程序崩溃了。我试图使用ExceptionEvent处理应用程序,但仍然无法捕获此异常

有什么解决这个问题的建议吗?(每次断开wifi连接时,应用程序都会崩溃,这是非常可怕的)