2013-04-17 187 views
2

我們有一個azure blob存儲,並啓用了日誌記錄。 我可以查看這些日誌並使用管理門戶下載斑點。 但現在我試圖使用客戶端API列出這些日誌。沿線 東西:

let account = new CloudStorageAccount(credentials, true) 
let client = account.CreateCloudBlobClient() 
let container = client.GetContainerReference "$logs" 
container.ListBlobs() 

但是,這將引發一個Web異常代碼400 Bad Request。 我可以。但是,請列出此客戶端上其他容器的blob。 我知道我需要爲這個容器進行身份驗證,但我使用的主要訪問密鑰的憑據。 那麼,爲什麼我不能得到$日誌blob?

感謝

+1

我試過了,它爲我工作。你能告訴我你使用的是什麼版本的存儲客戶端庫嗎?我同時使用1.8和2.0,並在兩種情況下都能正常工作。 –

+0

在我的機器上它是1.7.0 ...嗯..在哪裏更新? :) –

+0

您可以從http://www.windowsazure.com/en-us/downloads/下載最新的SDK或從Nuget引用最新的存儲客戶端庫:http://nuget.org/packages/WindowsAzure.Storage/ 。 HTH。 –

回答

4

正如我上面我的評論中提到,你將需要使用存儲客戶端庫的最新版本,你可以從得到的NuGet:http://nuget.org/packages/WindowsAzure.Storage/

這裏的示例代碼:

open Microsoft.WindowsAzure.Storage 
open Microsoft.WindowsAzure.Storage.Auth 
open Microsoft.WindowsAzure.Storage.Blob 

[<EntryPoint>] 
let main argv = 
    let credentials = new StorageCredentials("accountname", "accountkey") 
    System.Console.WriteLine(credentials.AccountName) 
    let account = new CloudStorageAccount(credentials, true) 
    System.Console.WriteLine(account.BlobEndpoint) 
    let client = account.CreateCloudBlobClient(); 
    let container = client.GetContainerReference "$logs" 
    System.Console.WriteLine(container.Uri) 
    let blobs = container.ListBlobs("", true, BlobListingDetails.All, null, null); 
    for blob in blobs do 
     System.Console.WriteLine(blob.Uri) 
    let response = System.Console.ReadLine() 
    0 // return an integer exit code 

上面的代碼需要存儲客戶端庫2.0。

你回來只有一個項目的原因是因爲你打電話ListBlobs函數沒有參數。如果您在這裏查看此函數的定義(http://msdn.microsoft.com/en-us/library/windowsazure/microsoft.windowsazure.storage.blob.cloudblobcontainer.listblobs.aspx),您會發現通過將useFlatBlobListing參數指定爲true(我在上面的代碼中指定),可以將所有Blob都存儲在Blob容器中。試試看,它會返回blob容器中所有斑點的列表。

+0

非常感謝:)最後,我將useFlatBlobListing設置爲false,並想知道爲什麼這沒有效果... –

+1

我只是太好奇,是什麼語言? :) – astaykov

+1

語言是F#。 –