2013-04-17 2 views
2

로깅 기능을 사용하여 하늘색 방울 저장소가 있습니다. 관리 포털을 사용하여 이러한 로그를보고 BLOB를 다운로드 할 수 있습니다. 하지만 이제 클라이언트 API를 사용하여 로그를 나열하려고합니다. 라인을 따라 뭔가 :

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

그러나이 웹 예외 코드 400 Bad Request가 발생합니다. 할 수 있습니다. 그러나이 클라이언트의 다른 컨테이너에서 blob을 나열하십시오. 이 컨테이너에 대해 인증해야한다는 것을 알고 있지만 자격증 명에 기본 액세스 키를 사용하고 있습니다. 그럼 왜 $ logs blob을 얻을 수 없습니까? http://nuget.org/packages/WindowsAzure.Storage/ : 내가 위에서 내 의견에서 언급 한 바와 같이

감사

+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에서 얻을 수있는 스토리지 클라이언트 라이브러리의 최신 버전을 사용해야합니다. 코드 위

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 컨테이너에있는 모든 blob의 목록을 반환합니다.

+0

대단히 감사합니다 :) 결국 false로 useFlatBlobListing을 설정하고 이것이 효과가 없었던 이유가 궁금합니다 ... –

+1

나는 언어가 무엇인지 궁금 해서요? :) – astaykov

+1

언어는 F #입니다. –

관련 문제