2

を使用して BLOB コンテナーを作成した後、コンテナー内の BLOBへのパブリック アクセスをユーザーに許可するようCreateIfNotExists()にすぐに呼び出しSetPermissions()ますが、コンテナー自体へのアクセスは許可しません。

そのようです:

CloudBlobContainer pdfContainer = blobClient.GetContainerReference(ContainerName.PDFs);

if (pdfContainer.CreateIfNotExists())
    pdfContainer.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob });

コンテナーは正常に作成されましたが、Azure portal にログインすると、BLOB コンテナーのアクセス許可がPrivate.

アクセス許可の変更をコミットするための追加の呼び出しがありませんか? 私が見た例はどれもそれを示しているようには見えず、ドキュメントにも何も表示されません。Azure SDK の v2.0 を使用しています。

アップデート:

CreateIfNotExists()常にfalseを返しているようです。Reflector でアセンブリを開いたところ、(409) Conflict HTTP エラーをキャッチし、例外を飲み込んでいることがわかりました。これは、SDK またはサーバー側の REST 実装に問題があるようです。コンテナーが存在せず、コンテナーの作成が成功しても、サーバーから 409 が返されます。

CreateIfNotExists()今のところ、呼び出して戻り値を無視するのが最善のようです。

GetPermissions()また、呼び出す前に呼び出す必要はありませんSetPermissions()

4

2 に答える 2

6

これは私にとってはうまくいきます(アプリの起動時に実行します):

var blobContainer = GetPhotoBlobContainer();  
blobContainer.CreateIfNotExists();  
var perm = new BlobContainerPermissions();  
perm.PublicAccess = BlobContainerPublicAccessType.Blob;  
blobContainer.SetPermissions(perm); 
于 2013-05-15T19:49:34.653 に答える
0

コンテナーのアクセス許可を取得するか、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);
于 2013-05-15T19:34:56.747 に答える