Ich habe einen privaten Azure Storage Container und probiere azurblauen Storage SAS aus, damit ich Dateien hochladen und herunterladen kann. Ich bin in der Lage, die Signatur zu erzeugen, aber es wirft mich immer die Authentifizierung fehl FehlerAzure Storage SAS AuthenticationFailed
AuthenticationFailed
Server die Anfrage zur Authentifizierung fehlgeschlagen. Stellen Sie sicher, dass der Wert des Autorisierungsheaders einschließlich der Signatur richtig gebildet ist. RequestId: a9dce486-0001-0021-23f7-d8f6dc000000 Zeit: 2017-05-30T03: 45: 56.6617677Z Signatur stimmte nicht überein. Zeichenkette zum Zeichen benutzt war 2017-05-30T03: 40: 48Z 2017-05-30T03: 55: 48Z /blob/{myaccount}/{mycontainer}/11e1575f-d3ad-40cc-b1ce-32e24dc20324.jpg2016-05-31
Dies ist der Code, den ich habe, die eine Signatur für mich erzeugt zu verwenden, und gibt den vollständigen URI auf die Datei zuzugreifen.
var accountAndKey = new StorageCredentials("******", "*********************");
var storageAccount = new CloudStorageAccount(accountAndKey, true);
var sasConstraints = new SharedAccessBlobPolicy();
sasConstraints.SharedAccessStartTime = DateTime.UtcNow.AddMinutes(-5);
sasConstraints.SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(10);
sasConstraints.Permissions = SharedAccessBlobPermissions.Read;
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("*****");
CloudBlockBlob blockBlob = container.GetBlockBlobReference("11e1575f-d3ad-40cc-b1ce-32e24dc20324.jpg");
var sasBlobToken = blockBlob.GetSharedAccessSignature(sasConstraints);
var sas = blockBlob.Uri + sasBlobToken;
return sas;
Dies ist die Signatur es
? Sv = 2016.05.31 & sr = b & sig = 9fUwDWfdtUifv9iZXJKgILEM7Yx1uP3Ku0vrspjWyz8% 3D & st = 2017-05-30T03% 3A40% 3A43Z & erzeugt se = 2017-05-30T03% 3A55% 3A43Z & sp = r
verwendete ich das Azure-Portal die Signatur zu erzeugen und es funktioniert gut. Ich füge es an und kann die Datei wie gewohnt herunterladen. Diese ist die Signatur erzeugt es
sv = 2016.05.31 & ss = b = & srt SOZ & sp = r = & se 2017-05-30T03: 57: 25Z & st = 2017- 05-30T03: 52: 25Z & spr = https & sig = JOnhkge0QWNdv8sXJjb5GazTo9c34KH1IvZBvcNgjHo% 3D
ich vermute, dass seine sehr ein Problem mit dem Zeitstempel. Weil ich einige Unterschiede im Zeitstempel zwischen dem, was ich aus dem Code erzeuge, und dem, was aus dem Portal generiert wird, sehen kann.
Alle Ideen werden sehr geschätzt. Vielen Dank.
EDIT ich den Code aktualisiert 1 Tag bis Ablauf hinzufügen und die Startzeit entfernt, ist dies die Signatur jetzt
? Sv = 2016.05.31 & sr = b & sig = 73m3% 2BJ% 2BUsFk537vd8a7F% 2BdpdON1Pg2RZ1IRynMH4zGA% 3D & se = 2017-05-31T06% 3A12% 3A07Z & sp = r
aber es tut immer noch erlauben sie mir, um die Datei herunterzuladen. Gleiche Fehlermeldung.
Die Signatur stimmt nicht überein. String verwendet, um Zeichen war r 2017-05-31T06: 12: 07Z/Blob/{MyAcc}/{Mein Container} /11e1575f-d3ad-40cc-b1ce-32e24dc20324.jpg 2016-05-31
Ihr Code sieht gut aus für mich. Können Sie es versuchen, indem Sie die Startzeit entfernen und die Ablaufzeit (zB einen Tag) in Ihrem Code erhöhen? –
@GauravMantri Ich habe den Code bearbeitet, um die Änderungen zu tun, aber immer noch kein Glück –
Was ist die Version von SDK verwenden Sie, um das SAS-Token zu generieren? –