2016-07-09 3 views
0

GrantSASAccess와 RevokeSASAccess의 두 가지 기능이 있습니다. 나는 blob에 파일을 업로드 할 수 있도록 (SAS를 생성하여) 액세스 권한을 부여합니다. 사용자가 "Ok, do done!"이라고 선언하면 나는 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 초가 걸릴 수 있습니다." –

관련 문제