And*_*y S 2 permissions azure azure-storage azure-storage-blobs
使用 创建一个 blob 容器后CreateIfNotExists(),我立即调用SetPermissions()以允许用户公开访问容器中的 blob,但不允许访问容器本身。
像这样:
CloudBlobContainer pdfContainer = blobClient.GetContainerReference(ContainerName.PDFs);
if (pdfContainer.CreateIfNotExists())
pdfContainer.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob });
Run Code Online (Sandbox Code Playgroud)
容器创建成功,但是当我登录到 Azure 门户时,blob 容器权限是Private.
我是否错过了提交权限更改的额外调用?我看过的例子似乎都没有表明这一点,我也没有在文档中看到任何内容。我正在使用 Azure SDK 的 v2.0。
更新:
看起来CreateIfNotExists()总是返回false。我在 Reflector 中打开了该程序集,发现它捕获了 (409) Conflict HTTP 错误并吞下了异常。这似乎是 SDK 或服务器端 REST 实现的问题。即使容器不存在并且容器创建成功,服务器仍然返回409。
似乎最好的办法是暂时调用CreateIfNotExists()并忽略返回值。
此外,没有必要在调用GetPermissions()之前调用SetPermissions()。
这对我有用(我在应用程序启动时运行它):
var blobContainer = GetPhotoBlobContainer();
blobContainer.CreateIfNotExists();
var perm = new BlobContainerPermissions();
perm.PublicAccess = BlobContainerPublicAccessType.Blob;
blobContainer.SetPermissions(perm);
Run Code Online (Sandbox Code Playgroud)