我試圖通過Web服務爲我的blob提供「只讀」訪問權限。 Web Service具有一種方法,它接收Blob和Container信息,然後返回一個帶有共享訪問簽名的URL,以便用戶訪問該Blob。由於這些圖像(斑點)在電話上緩存,我想保持簽名有效期長達1天。SharedAccessSignature Azure
我使用下面的代碼:
var blobClient = GetBlobClient();
var container = blobClient.GetContainerReference(containerName);
if (container != null)
{
container.CreateIfNotExist();
}
var policy = new SharedAccessPolicy()
{
SharedAccessStartTime = DateTime.Now,
Permissions = SharedAccessPermissions.Read,
SharedAccessExpiryTime = DateTime.Now.AddDays(days)
};
if (permissions.Contains("w"))
{
policy.Permissions = policy.Permissions | SharedAccessPermissions.Write;
policy.SharedAccessExpiryTime = DateTime.Now.AddMinutes(10);
}
//The shared access policy provides read/write access to the container for 10 hours.
BlobContainerPermissions containerPerms = new BlobContainerPermissions();
// The public access setting explicitly specifies that the container is private,
// so that it can't be accessed anonymously.
containerPerms.PublicAccess = BlobContainerPublicAccessType.Off;
containerPerms.SharedAccessPolicies.Clear();
containerPerms.SharedAccessPolicies.Add("mypolicy", policy);
// Set the permission policy on the container.
container.SetPermissions(containerPerms);
var blob = container.GetBlobReference(blobName);
// Get the shared access signature to share with users.
var blobPolicy = new SharedAccessPolicy();
blobPolicy.SharedAccessExpiryTime = DateTime.Now.AddDays(days);
blobPolicy.Permissions = SharedAccessPermissions.Read;
string sas = blob.GetSharedAccessSignature(blobPolicy, "mypolicy");
return sas;
每次我嘗試使用此代碼,我得到以下錯誤: 簽名不匹配。串籤使用爲r 2012-01-03T08:38:52Z /myContainer/12100/12409/29cae1b6-2955-4a33-ab27-ff99f0bb6470_m.jpg mypolicy
任何人都可以請指導我這個?