1
我有一些代碼可以給我一個天藍色blob中的pdf上的共享訪問簽名。爲C#中的塊blob生成共享訪問簽名
class Program
{
static void Main(string[] args)
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse("BlobEndpoint=<url>;AccountKey=<accountKey>");
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("products");
BlobContainerPermissions containerPermissions = new BlobContainerPermissions();
containerPermissions.PublicAccess = BlobContainerPublicAccessType.Off;
container.SetPermissions(containerPermissions);
containerPermissions.SharedAccessPolicies.Add("mypolicy", new SharedAccessPolicy()
{
SharedAccessStartTime = DateTime.UtcNow.AddSeconds(1),
SharedAccessExpiryTime = DateTime.UtcNow.AddHours(1),
Permissions = SharedAccessPermissions.Read | SharedAccessPermissions.Write
});
string sas = container.GetSharedAccessSignature(new SharedAccessPolicy(), "mypolicy");
CloudBlobClient sasBlobClient = new CloudBlobClient(storageAccount.BlobEndpoint, new StorageCredentialsSharedAccessSignature(sas));
CloudBlob blob = sasBlobClient.GetBlobReference("products/virtual/computer/brochure.pdf");
Console.WriteLine(blob.Uri.AbsoluteUri + sas);
}
}
當我運行的代碼和URL粘貼到瀏覽器中,我得到以下幾點:
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>AuthenticationFailed</Code>
<Message>Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature. RequestId:05c9cfc0-d7fd-4352-9b21-9e273efdc09f Time:2014-02-05T13:36:05.6126781Z</Message>
<AuthenticationErrorDetail>Signature did not match. String to sign used was /portalvhdsv53d88583slg1/products mypolicy</AuthenticationErrorDetail>
</Error>
我要的是生成,這將使我訪問PDF一段網址的時間爲blob存儲中的項目。我究竟做錯了什麼?
能否請您編輯您的問題,並刪除該帳戶的關鍵。另外,我會建議重新生成帳戶密鑰。 –
關鍵是沒有真正的鑰匙,這是一個假的。爲什麼重新生成密鑰? –
我認爲這是一個真正的關鍵,因此評論。重新生成是因爲有人可以查看修訂歷史記錄並使用它們。考慮到關鍵不是真實的,這個問題是沒有意義的。對不起按緊急按鈕:) –