2010-11-09 76 views
3

背景的Windows Azure - Blob存儲初始化 - 授權錯誤

我有這是一個ASP.NET應用程序(C#),它採用了製圖應用程序中顯示的結果一個Web角色的Azure應用程序計算。製圖應用程序需要一個XML文件作爲輸入。爲了訪問這個XML文件(在JavaScript中引用),我使用XDocument和相關類來操縱文件,然後保存它,圖表控件在頁面刷新時加載。

錯誤

當嘗試操作容器對象(GetPermissions,創建,如果它不存在創建,等等),我收到以下錯誤:

服務器未能驗證請求。確保授權標頭的值正確形成,包括簽名。

我也嘗試使用SpaceBlock預先創建容器,這似乎沒有改變結果。

代碼

這裏是我在Page_Load中調用該函數。在大膽(GetPermissions)行出現的錯誤:

private void InitializeStorage() 
    { 
     if (storageInitialized) 
     { 
      return; 
     } 

     lock (gate) 
     { 
      if (storageInitialized) 
      { 
       return; 
      } 

      try 
      { 
       CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) => 
       { 
        configSetter(RoleEnvironment.GetConfigurationSettingValue(configName)); 
       }); 

       // read account configuration settings 
       var storageAccount = CloudStorageAccount.FromConfigurationSetting("DataConnectionString"); 

       // create blob container for images 
       blobStorage = storageAccount.CreateCloudBlobClient(); 
       CloudBlobContainer container = blobStorage.GetContainerReference("xml"); 

       // configure container for public access 
       **var permissions = container.GetPermissions();** 
       permissions.PublicAccess = BlobContainerPublicAccessType.Container; 
       container.SetPermissions(permissions); 

       CloudBlob opcBlob = container.GetBlobReference("OptionPriceChart.xml"); 
       opcBlob.DownloadToFile("opcLocal.xml"); 

      } 
      catch (WebException) 
      { 
       throw new WebException("Storage services initialization failure. " 
        + "Check your storage account configuration settings. If running locally, " 
        + "ensure that the Development Storage service is running."); 
      } 

      storageInitialized = true; 
     } 
    } 
+0

您是否試圖針對開發存儲或實際的雲帳戶運行此操作?你有沒有檢查你的連接字符串? – knightpfhor 2010-11-09 20:18:24

回答

1

我不能看到你的代碼,您所提供的任何使你在談論的問題。在調用權限之前,你需要確保你已經完成了CreateIfNotExist,否則你將得到The specified container does not exist錯誤(這是我猜你在遇到你當前的問題之前所做的)。

由於代碼看起來很好,這可能意味着它是你的環境中導致你悲傷的東西,很可能是連接字符串。我已嘗試通過混淆連接字符串來複制您的問題,並且唯一能夠得到完全相同錯誤的方法是使用AccountName和來自其他帳戶的有效AccountKey。所以我的建議是回到Azure門戶,轉到您的存儲服務並將Primary Access Key複製到您的雲配置中。

+0

我讀過另一篇文章,建議使用輔助鍵代替主鍵。一旦我使用了主鍵,我就會過去那個錯誤並且繼續到另一個!謝謝。 – user502339 2010-11-09 21:28:00

+0

這似乎已破碎。如果一個鍵工作而另一個鍵不工作,那就是一個錯誤。 – smarx 2010-11-09 23:24:39

+0

如果是這種情況,再次嘗試使用輔助密鑰是值得的,只是爲了確保它與複製/粘貼的內容無關。如果它仍然不起作用,那麼smarx指出,這是一個錯誤,所以你我會聯繫MS支持。但至少你現在可以繼續進行小學發展。 – knightpfhor 2010-11-10 00:08:11