2014-02-27 36 views
0

我在Azure的容器中創建了一個私有blob。Azure blob從私有公開更改爲公開

不幸的是,當我上傳文件時,它變爲公開。我試圖找到一種方法來將文件設置爲上傳時爲私有,因爲這可能是問題,但我找不到任何東西。

任何想法,爲什麼這是?

在上傳時,私人文件應該被區別對待嗎?

我上傳代碼:

CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); 

CloudBlobContainer container = blobClient.GetContainerReference(containerName); 

if (file != null) 
{ 
    CloudBlockBlob blockBlob = container.GetBlockBlobReference(filename); 

    blockBlob.UploadFromStream(file.InputStream); 

    blockBlob.Properties.ContentEncoding = MimeTypes.GetContentType(filename); 
    if (ht != null) 
    { 
     foreach (DictionaryEntry item in ht) 
     { 
      blockBlob.Metadata[item.Key.ToString()] = item.Value.ToString(); 
     } 

     blockBlob.SetMetadata(); 
    } 
    blockBlob.Metadata["Created"] = DateTime.UtcNow.ToString(); 
    blockBlob.SetProperties(); 
} 
+0

你能分享一些代碼嗎? –

+0

你的代碼看起來對我來說很好。實際上,在blob容器上執行操作的代碼中沒有任何內容。兩件事:1)你說什麼私人blob?沒有私人團體這樣的事情。 ACL(私有/公共)適用於容器級別。你看到容器的ACL從私人變爲公共? 2)你能分享創建blob容器的代碼嗎? –

+0

我的不好。我有一個私人的容器,當我上傳一個文件時(至少它在某個時候會改變),這個容器會變成公共的。 我在Azure管理中創建了包含器。 –

回答

0

代碼似乎還好吧,請大家在這裏看看:

How to use Blobs in Windows Azure

你的斑點會得到相同的訪問權限爲您的容器。

一些額外的信息:看起來你使用StorageClient Library v1.7。這一個已被棄用,v3.0是推薦版本(StorageClient Library v3.0.0)。

儘管StorageClient Library v.3.0.0中有一個issue,但它使用本地(測試)機器上的容器。

+1

發現錯誤。這是我的不好。當複製/粘貼以下代碼潛入中: container.SetPermissions( 新BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob }); –