2016-07-09 4 views
0

GrantSASAccessとRevokeSASAccessの2つの機能があります。私はblobにファイルをアップロードするためのアクセス権(SASを生成することによって)を許可します。ユーザーが「OK」を宣言すると、完了です! SAS Accessを取り消します。しかし... SASを一瞬解除しても、ユーザーは引き続きファイルをアップロードすることができます。 3〜5秒後にのみ適切にブロックされます。なぜそうなのですか?これを防ぐ方法は?Azureコンテナ:SetPermissionsは数秒後に動作します

public async Task GrantSASAccess(CloudBlobContainer container) 
    { 
     BlobContainerPermissions permissions = await container.GetPermissionsAsync(); 
     permissions.SharedAccessPolicies[container.Name] = new SharedAccessBlobPolicy() 
     { 
      Permissions = SharedAccessBlobPermissions.Write, 
      SharedAccessExpiryTime = _dateTimeService.GetUtcNow().AddMinutes(Core.ConfigurationHelper.GetSASExpirationTime()) 
     }; 

     await container.SetPermissionsAsync(permissions); 
    } 

    public async Task RevokeSASAccess(StorageCredentials storageCredentials, string containerName, string policyName) 
    { 
     CloudBlobContainer container = GetContainerReference(storageCredentials, containerName); 
     BlobContainerPermissions permissions = container.GetPermissions(); 
     permissions.SharedAccessPolicies.Remove(containerName); 

     await container.SetPermissionsAsync(permissions); 
    } 

答えて

1

コンテナSASポリシーの変更が有効になるまでに最大30秒かかることがあります。これは、新しいポリシーの確立と既存のポリシーの取り消しの両方に適用されます。ストレージアカウントキーを再生成する場合も同じことが言えます。変更には最大30秒かかります。

0

変更が反映されるまでにストレージに時間がかからないとは100%確信していません。しかし、非同期タスクが完了してから3〜5秒後にはそれを数えていますか? あなたは呼び出しがで結果待ちを終了したことを確認するかもしれない場合:

var task = container.SetPermissionsAsync(permissions); 
 
task.Wait();

あなたのAPIは、しかし、もはや非同期ではありません。

+0

SetPermissionsAsyncは即座に実行されますが、数秒後にエフェクトが表示されます。 Michal氏が書いた通り "コンテナの変更がSASポリシーに反映されるまでに30秒かかることがあります" –

関連する問題