UPD: Hier ist mein implemented solution to this problemHochladen zu Azure Blob Storage mit Shared Access Key
Ich versuche zu Azure Blob Speicher über Azure.Storage Bibliothek (nicht REST API) und die Authentifizierung über Shared Access Key hochladen .
Ich habe diese blog post gesehen, aber die API hat sich seit dem Post geändert und jetzt kann ich nicht das gleiche Ergebnis erhalten. Hier
ist, was ich habe:
var blobClient = new CloudBlobClient(new Uri(blobWithSas.BaseUri), new StorageCredentials(blobWithSas.Sas));
// here I receive 404 error
var blob = blobClient.GetBlobReferenceFromServer(new Uri(blobWithSas.AbsoluteUri));
using (var stream = new FileStream(fullFilePath, FileMode.Open))
{
blob.UploadFromStream(stream);
}
Mit: (. Guid Name des Containers ist, bereits vorhanden sind, woanders geschaffen)
blobWithSas.BaseUri
= http://127.0.0.1:10000/devstoreaccount1/a6dc9274-6ce1-4095-be6b-e84d1012cb24
blobWithSas.Sas
= ?sv=2012-02-12&se=2013-06-23T03%3A04%3A53Z&sr=b&sp=w&sig=NaMqgXRMXDFvLAp8LTskgplAKp%2B9LCZzq8WK9Zo35x8%3D
(auch an anderer Stelle im Code ausgegeben)
blobWithSas.AbsoluteUri
= http://127.0.0.1:10000/devstoreaccount1/a6dc9274-6ce1-4095-be6b-e84d1012cb24/foldername/filename.txt
Der Blob existiert nicht, ich möchte eine neue Datei hochladen und einen Blob erstellen. Ich habe "Server" -Anwendung, die Zugriffsschlüssel zum Azure-Speicherkonto hält. Der Server würde SAS an Clients und Clients senden, die Dateien direkt an Azure hochladen. Also SAS wäre nur zu schreiben, keine Lesung und Clients erstellen Dateien, wo der Server ihnen sagt (Container, Ordnernamen)
Das Problem kommt auf GetBlobReferenceFromServer
- ich bekomme 404 Fehler von Azure Storage. Ja, der Blob existiert nicht und es gibt keine Referenz. Wie kann ich also eine Datei in einen Blob hochladen, wenn ich den CloudBlobClient verwende?
p.s. Ich weiß, dass es REST-API für diese Dinge gibt. Aber ich habe Microsoft.WindowsAzure.Storage
Bibliothek zuvor verwendet und möchte REST-Dienst wenn möglich vermeiden.
Danke! Du bist ein Star! Ich habe die Erstellung eines Containerobjekts mit SAS vermisst. – trailmax
Ich fand, dass die Abfragezeichenfolge URL-codiert war und die BlobContainerSasUri nicht war, wodurch der Substring-Aufruf nicht ordnungsgemäß funktioniert. Ersetzen Sie diese Zeile durch 'string blobContainerUri = blobContainerSasUri.Split ('?') [0];' – tster