用我面臨的一個問題,有線不工作時..SharedAccessSignature在客戶端
我想允許特定用戶從/到Azure的集裝箱讀/寫文件。爲此,我使用SharedAccessSignature的概念。
我生成在RESTful(ASP.NET MVC4)Web服務哪些客戶端調用以獲得進入關鍵的共享訪問簽名..
CloudStorageAccount storageAccount = CloudStorageAccount.DevelopmentStorageAccount;
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference (containerName);
container.CreateIfNotExist();
BlobContainerPermissions containerPermissions = new BlobContainerPermissions();
containerPermissions.PublicAccess = BlobContainerPublicAccessType.Off;
container.SetPermissions (containerPermissions);
string sas = container.GetSharedAccessSignature (new SharedAccessPolicy()
{
SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes (30),
Permissions = SharedAccessPermissions.Write | SharedAccessPermissions.Read
});
//return sas to user
我回到sas
在那裏他試圖上傳客戶端最後行客戶端上的斑點使用下面的代碼
CloudBlobClient sasBlobClient = new CloudBlobClient ("http://127.0.0.1:10000/devstoreaccount1", new StorageCredentialsSharedAccessSignature (sak));
CloudBlob blob = sasBlobClient.GetBlobReference (containerName + "/myblob.txt");
blob.UploadText ("Hello SAS World");
拋出異常
服務器無法authenti滿足要求。確保授權標頭的值正確形成,包括簽名。
內部異常:{「遠程服務器返回錯誤:禁止(403)」}
有趣的是,如果我把客戶端代碼獲得sas
(string sas = container.GetShare.......)
它工作沒有任何之後例外。但是,如果我將我的客戶端代碼放入單獨的控制檯應用程序(然後通過REST調用檢索密鑰),則會引發異常。
你能解釋一下下面的語句(最後段落):「...(然後通過REST調用檢索密鑰)...」。謝謝。 – 2012-08-02 13:03:33
他(Haris)可能意味着他通過對其Web API進行REST調用來獲取控制檯應用程序中的共享訪問密鑰。 – pug 2012-08-02 14:41:25
是的帕格是正確的..我的控制檯應用程序調用REST API以獲得密鑰 – 2012-08-02 15:05:42