[英]Can't programmatically set permissions to blob container in Azure Storage
在使用SetPermissions()
CreateIfNotExists()
Blob容器之后,我立即调用SetPermissions()
以允许用户公共访问容器中的Blob,但不能访问容器本身。
像这样:
CloudBlobContainer pdfContainer = blobClient.GetContainerReference(ContainerName.PDFs);
if (pdfContainer.CreateIfNotExists())
pdfContainer.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob });
容器创建成功,但是当我登录到Azure门户时,blob容器权限为Private
。
我是否错过了提交权限更改的其他电话? 我看过的所有示例似乎都没有表明这一点,并且我在文档中也没有看到任何内容。 我正在使用Azure SDK的v2.0。
更新:
看起来CreateIfNotExists()
总是返回false。 我在Reflector中撬开了程序集,发现它正在捕获(409)冲突HTTP错误并吞下了异常。 对于SDK或服务器端REST实现,这似乎是一个问题。 即使容器不存在并且容器创建成功,服务器仍然返回409。
似乎最好的办法是调用CreateIfNotExists()
并暂时忽略返回值。
另外,在调用GetPermissions()
之前SetPermissions()
调用SetPermissions()
。
这对我有用(我在应用启动时运行):
var blobContainer = GetPhotoBlobContainer();
blobContainer.CreateIfNotExists();
var perm = new BlobContainerPermissions();
perm.PublicAccess = BlobContainerPublicAccessType.Blob;
blobContainer.SetPermissions(perm);
您可以通过CloudBlobContainer.GetPermissions
检索容器权限,也可以创建新的容器权限,然后可以设置BlobContainerPermissions.PublicAccess
属性。
BlobContainerPermissions perms = pdfContainer.GetPermissions(); // get existing permissions
perms.PublicAccess = BlobContainerPublicAccessType.Blob; // blob public access
pdfContainer.SetPermissions(perms);
// or create new permissions
BlobContainerPermissions perms = new BlobContainerPermissions();
perms.PublicAccess = BlobContainerPublicAccessType.Blob; // blob public access
pdfContainer.SetPermissions(perms);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.