1
我們有一個設置,其中給定的uuid標記的blob可以在N個容器中的一個或沒有容器。鑑於N個容器找到blob
什麼是最好的方式來檢查並行所有容器返回blob如果找到或報告blob不存在?
我們的容器名稱是日期,並且在任何給定時間將不會超過五個,只會有一個blob。
我們有一個設置,其中給定的uuid標記的blob可以在N個容器中的一個或沒有容器。鑑於N個容器找到blob
什麼是最好的方式來檢查並行所有容器返回blob如果找到或報告blob不存在?
我們的容器名稱是日期,並且在任何給定時間將不會超過五個,只會有一個blob。
您可以使用CloudBlob.FetchAttributes()
這確實對BLOB一個HEAD,如果失敗會拋出異常。 (本質上檢驗,如果存在的話)
所以只是在一個循環中創建容器&的blob手柄,測試,如果存在,如果真的返回。
public static class BlobExtensions
{
public static bool Exists(this CloudBlob blob)
{
try
{
blob.FetchAttributes();
return true;
}
catch (StorageClientException e)
{
if (e.ErrorCode == StorageErrorCode.ResourceNotFound)
{
return false;
}
else
{
throw;
}
}
}
}
我希望在沒有存在檢查往返行程的情況下並行查看每個容器。 –
如果無法從任何容器加載它應該報告blob不存在。 –
然後將上面的代碼粘貼到Parallel.Foreach()中,如果找到所需內容,則跳出循環。您必須單獨檢查每個容器,因爲檢查Blob存在的方法是檢查是否爲Web請求獲取了HTTP 200 OK。 –