我正在使用以下代码为使用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。 –