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.
Configurazione locale o cloud? –
Configurazione cloud. E ho appena scoperto che non è solo con questi due comandi, è un comando su un contenitore. Ho aggiornato la mia domanda. –
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