Quellcode durchsuchen

Fix delete folder error when network exception.

Justin vor 1 Jahr
Ursprung
Commit
aa89c9b4f6
1 geänderte Dateien mit 29 neuen und 21 gelöschten Zeilen
  1. 29 21
      libfisp/fisp.cs

+ 29 - 21
libfisp/fisp.cs

@@ -19,6 +19,8 @@ namespace libfisp
 
             var config = new CosXmlConfig.Builder()
                 .SetRegion(region)
+                .SetConnectionTimeoutMs(10000)
+                .SetReadWriteTimeoutMs(10000)
                 .SetDebugLog(true)
                 .Build();
 
@@ -75,39 +77,45 @@ namespace libfisp
             var deleteTask = new DeleteTask();
             Task.Run(() =>
             {
-                var isSuccess = true;
-                var getRequest = new COSXML.Model.Bucket.GetBucketRequest(_bucket);
-                getRequest.SetPrefix(folderName);
-                var getResult = _cosXml.GetBucket(getRequest);
-                if (getResult.IsSuccessful())
+                try
                 {
-                    var files = getResult.listBucket.contentsList.Select(x => x.key).ToArray();
-                    for (var i = 0; i < files.Length; i++)
+                    var isSuccess = true;
+                    var getRequest = new COSXML.Model.Bucket.GetBucketRequest(_bucket);
+                    getRequest.SetPrefix(folderName);
+                    var getResult = _cosXml.GetBucket(getRequest);
+                    if (getResult.IsSuccessful())
                     {
-                        var file = files[i];
-                        var deleteRequest = new DeleteObjectRequest(_bucket, file);
-                        var deleteResult = _cosXml.DeleteObject(deleteRequest);
-                        if (deleteResult.IsSuccessful())
+                        var files = getResult.listBucket.contentsList.Select(x => x.key).ToArray();
+                        for (var i = 0; i < files.Length; i++)
                         {
-                            deleteTask.UpdateProgress((i + 1) * 100 / files.Length);
+                            var file = files[i];
+                            var deleteRequest = new DeleteObjectRequest(_bucket, file);
+                            var deleteResult = _cosXml.DeleteObject(deleteRequest);
+                            if (deleteResult.IsSuccessful())
+                            {
+                                deleteTask.UpdateProgress((i + 1) * 100 / files.Length);
+                            }
+                            else
+                            {
+                                deleteTask.UpdateFailed(deleteResult.GetResultInfo());
+                                isSuccess = false;
+                                break;
+                            }
                         }
-                        else
+                        if (isSuccess)
                         {
-                            deleteTask.UpdateFailed(deleteResult.GetResultInfo());
-                            isSuccess = false;
-                            break;
+                            deleteTask.UpdateSuccess();
                         }
                     }
-                    if (isSuccess)
+                    else
                     {
-                        deleteTask.UpdateSuccess();
+                        deleteTask.UpdateFailed("List folders failed.");
                     }
                 }
-                else
+                catch (Exception ex)
                 {
-                    deleteTask.UpdateFailed("List bucket failed.");
+                    deleteTask.UpdateFailed(ex.Message);
                 }
-
             });
             return deleteTask;