2013-07-02 23 views
1

我們有一個設置,其中給定的uuid標記的blob可以在N個容器中的一個或沒有容器。鑑於N個容器找到blob

什麼是最好的方式來檢查並行所有容器返回blob如果找到或報告blob不存在?

我們的容器名稱是日期,並且在任何給定時間將不會超過五個,只會有一個blob。

回答

1

您可以使用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; 
      } 
     } 
    } 
} 
+0

我希望在沒有存在檢查往返行程的情況下並行查看每個容器。 –

+0

如果無法從任何容器加載它應該報告blob不存在。 –

+0

然後將上面的代碼粘貼到Parallel.Foreach()中,如果找到所需內容,則跳出循環。您必須單獨檢查每個容器,因爲檢查Blob存在的方法是檢查是否爲Web請求獲取了HTTP 200 OK。 –