Si verificano problemi con i BLOB di Azure e le firme di accesso condiviso quando scadono. Devo concedere l'accesso a un BLOB per più di 1 ora (7 giorni), quindi sto utilizzando una politica contenitore denominata, ma sfortunatamente non riesco a generare nuovi URL una volta che questi 7 giorni sono scaduti.Firma accesso condiviso contenitore BLOB di Azure in scadenza
Ho il seguente codice per creare il criterio "predefinito". Nota In questo codice, sto impostando la scadenza per essere 1 minuto dalla società, per rendere più facile da testare:
CloudStorageAccount account = new CloudStorageAccount(credentials, true);
CloudBlobClient client = new CloudBlobClient(account.BlobEndpoint, credentials);
CloudBlobContainer container = client.GetContainerReference("files");
SharedAccessPolicy sharedAccessPolicy = new SharedAccessPolicy();
sharedAccessPolicy.Permissions = SharedAccessPermissions.Read;
sharedAccessPolicy.SharedAccessStartTime = DateTime.UtcNow;
sharedAccessPolicy.SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(1);
BlobContainerPermissions blobContainerPermissions = new BlobContainerPermissions();
blobContainerPermissions.SharedAccessPolicies.Add("default", sharedAccessPolicy);
container.SetPermissions(blobContainerPermissions);
Ho quindi creare un URL SharedAccessSignature con il seguente:
CloudStorageAccount account = new CloudStorageAccount(credentials, true);
CloudBlobClient client = new CloudBlobClient(account.BlobEndpoint, credentials);
CloudBlobContainer container = client.GetContainerReference("files");
CloudBlob blob = container.GetBlobReference(path);
string sas = blob.GetSharedAccessSignature(new SharedAccessPolicy(), "default");
Console.WriteLine(blob.Uri.AbsoluteUri + sas);
Questo genera un url e l'url funziona correttamente per il minuto successivo (o 7 giorni nel codice reale). Una volta che il minuto è finito, l'url non è valido e non funziona più, come previsto.
Ma una volta scaduta la scadenza, eseguo nuovamente il codice per generare un nuovo URL. Sfortunatamente, genera lo stesso url, che non è ancora valido.
sono i tempi di inizio/fine per le politiche di contenitori in assoluto, cioè quando ho impostato che la politica in questo momento:
sharedAccessPolicy.SharedAccessStartTime = DateTime.UtcNow;
sharedAccessPolicy.SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(1);
nulla usando che la politica è valida solo dalle 10:10 (EDT) a 10:11 (EDT) oggi?
Così i tempi di inizio/fine per le politiche contenitore sono in assoluto. Anch'io pensavo che fossero parenti. – nmit026