Mentre il contenuto di blob può essere trasmesso attraverso un server Web, e insieme all'utente finale tramite browser, questa soluzione carica il server Web, sia cpu che NIC.
Un approccio alternativo consiste nel fornire all'utente finale un uri al blob desiderato da scaricare, che può fare clic nel contenuto HTML. per esempio. https://myaccount.blob.core.windows.net/mycontainer/myblob.ext
.
Il problema con questo è se il contenuto è privato, poiché un uri come quello sopra non funzionerà se non si utilizzano blob pubblici. A tale scopo, è possibile creare una firma di accesso condiviso (o una politica memorizzata sul server), che quindi genera una sequenza di query hash aggiunta all'uri. Questo nuovo uri sarebbe valido per un dato periodo di tempo (10 minuti, ad esempio).
Ecco un piccolo esempio di creazione di un SAS per un blob:
var sasConstraints = new SharedAccessBlobPolicy();
sasConstraints.SharedAccessStartTime = DateTime.UtcNow.AddMinutes(-5);
sasConstraints.SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(10);
sasConstraints.Permissions = SharedAccessBlobPermissions.Read;
var sasBlobToken = blob.GetSharedAccessSignature(sasConstraints);
return blob.Uri + sasBlobToken;
Si noti che l'ora di inizio è impostato per essere un paio di minuti nel passato. Questo è per gestire la deriva del clock. Ecco il full tutorial Ho afferrato/modificato questo esempio di codice da.
Utilizzando l'accesso diretto al BLOB, si ignorerà completamente l'istanza di ruolo/sito Web VM/Web (riducendo il carico del server) e il contenuto del BLOB dell'utente finale verrà prelevato direttamente dall'archiviazione BLOB. Puoi comunque utilizzare la tua app Web per gestire le autorizzazioni, decidere quali contenuti pubblicare, ecc. Ma ... questo ti consente di collegarti direttamente alle risorse BLOB, piuttosto che trasmetterli tramite il tuo server web.
fonte
2015-05-26 20:22:13
Ulteriori informazioni sul modello di chiavi di Valet qui: https://msdn.microsoft.com/en-us/library/dn568102.aspx –
Devo adottare un approccio simile quando ottengo l'errore di scaricare un file con solo il relativo URI. Grazie per l'heads up di David. – Kris