2014-02-27 34 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 }); –