我正在使用以下代碼爲使用Storage Client SDK版本8.0.0的blob容器生成SAS以匹配AzCopy正在使用的內容。Azure Blob容器SAS在代碼而不是AzCopy中運行
CloudStorageAccount storageAccount = CloudStorageAccount.Parse("myconnectionstring");
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");
SharedAccessBlobPolicy sasConstraints = new SharedAccessBlobPolicy();
sasConstraints.SharedAccessStartTime = DateTime.Now.AddHours(-24);
sasConstraints.SharedAccessExpiryTime = DateTime.Now.AddHours(24);
sasConstraints.Permissions = SharedAccessBlobPermissions.List | SharedAccessBlobPermissions.Read;
string sas = container.GetSharedAccessSignature(sasConstraints, null);
Console.WriteLine(sas);
Console.WriteLine(container.Uri);
StorageCredentials creds = new StorageCredentials(sas);
var sasContainer = new CloudBlobContainer(new Uri(container.Uri + sas));
var items = sasContainer.GetBlobReference("items.txt");
這一切都在代碼工作正常,但是當我複製SAS令牌到AzCopy下載一個blob的「SourceSAS」參數,我得到一個403稱該簽名不匹配(通過提琴手)。用於創建簽名的參數對我來說很合適。我很困惑,爲什麼這可以在代碼中工作,但不通過AzCopy。
如果我使用Azure存儲資源管理器工具創建SAS令牌,它工作正常。此SAS令牌以不同版本的服務爲目標,但我無法強制SDK更改該參數。有誰知道爲什麼會發生這種情況?我將在更新中發佈Fiddler內容。
請提供Fiddler跟蹤。同時告訴我們你使用的是什麼版本的AzCopy。 –