2013-03-12 7 views
6

Sto lavorando con Archiviazione di Azure e ho alcuni problemi durante la chiamata ai comandi su un contenitore. Lo sto eseguendo con un test unitario e talvolta quando un comando viene chiamato su un contenitore, si siede e aspetta quel comando per quasi 5 minuti. E se aspetto abbastanza a lungo, continuerà e riuscirà. Quando si esegue questo, il contenitore esiste effettivamente, quindi non è necessario creare il contenitore.Il comando del contenitore di archiviazione di Azure è in esecuzione estremamente lungo.

Qualcun altro si è imbattuto in questo problema? Ho provato a impostare uno ServerTimeout su BlobRequestOptions ma non ha avuto alcun effetto.

Ecco un esempio di ciò che il mio codice sta facendo:

var blobClient = _storageAccount.CreateCloudBlobClient(); 
var container = blobClient.GetContainerReference(containerName); 
var options = new BlobRequestOptions() { ServerTimeout = TimeSpan.FromSeconds(10) }; 
if (!container.Exists(options)) //<<<<this is where it hangs 
{ 
    container.Create(); 
} 

Ho anche provato con CreateIfNotExists():

var blobClient = _storageAccount.CreateCloudBlobClient(); 
var container = blobClient.GetContainerReference(containerName); 
container.CreateIfNotExists(); //<<<this is where it hangs 

Si blocca anche se cerco solo di elencare i blob

Non succede per ogni contenitore ma quando succede per uno, sembra essere lo stesso uno. Ho controllato e il contenitore esiste.

+0

Configurazione locale o cloud? –

+0

Configurazione cloud. E ho appena scoperto che non è solo con questi due comandi, è un comando su un contenitore. Ho aggiornato la mia domanda. –

+0

Hai usato qualcosa come Fiddler o Netmon per vedere se la richiesta è in attesa sul servizio di archiviazione (ad esempio in attesa che venga restituita la chiamata HTTP), o se il ritardo è nella tua app (cioè nessun thread di lavoro libero per gestire il richiesta)? – kwill

risposta