2017-07-13 2 views
1

In unserer Produktumgebung, Wir laden Blobs und manchmal sehe ich ein Verhalten, dass eine Datei über 60% heruntergeladen wird und dann nichts passiert. Es wird weder ausgegeben noch zurückgegeben. Damit ist der Download auf unbestimmte Zeit blockiert. Das Handle zu der Datei, in der es geschrieben wird, wird nicht freigegeben. Ich gehe davon aus, dass die Aufgabe, die in StartSchedule() Methode in TransferScheduler Klasse erstellt wird, läuft unbegrenzt. Die Dumps verraten nichts. Gibt es eine Möglichkeit herauszufinden, was das Problem sein könnte? Ich benutze Version 0.5.0Azure Data Movement-Bibliothek - Blob Download bleibt stecken

Antwort

0

Ich habe ein C# -Konsolen-Projekt erstellt, aber ich kann das Problem, das Sie erwähnten, nicht repro, auch ich habe die 4G-Datei für den Test verwendet. Ich teste mit Microsoft.Azure.Storage.DataMovement SDK Version 0.5.0 und 0.6.0. Das Folgende ist der Code, den ich für den Test verwendet habe.

string storageConnectionString = "connection string"; 
    CloudStorageAccount account = CloudStorageAccount.Parse(storageConnectionString); 
    CloudBlobClient blobClient = account.CreateCloudBlobClient(); 
    CloudBlobContainer blobContainer = blobClient.GetContainerReference("container name"); 
    blobContainer.CreateIfNotExists(); 
    string destPath = "file path"; 
    CloudBlockBlob sourceBlob = blobContainer.GetBlockBlobReference("blob name"); 
    TransferManager.Configurations.ParallelOperations = 64; 
    // Setup the transfer context and track the download progress 
    SingleTransferContext context = new SingleTransferContext 
    { 
     ProgressHandler = new Progress<TransferStatus>(progress => 
     { 
       Console.WriteLine("Bytes download: {0}", progress.BytesTransferred); 
     }) 
    }; 
    // download thee blob 
    var task = TransferManager.DownloadAsync(
    sourceBlob, destPath, null, context, CancellationToken.None); 
    task.Wait(); 

enter image description here

Verwandte Themen