2017-06-15 71 views
0

我讀這個articleAzure容器權限

我有一個名爲「test」的天藍色容器,設置爲天藍色。 該容器中有一個scorm包「121/HEEDENNL/story.html」

我正在使用下面的代碼來設置要讀取的文件夾的權限。 但是,story.html文件需要其他幾個文件才能正常運行。 故事頁面打開並且不返回403或404。 但它嘗試引用以使頁面正常運行的文件未加載。

如何獲取story.html所需的所有文件以正確運行,並設置爲讀取訪問權限?

我認爲更改容器權限將允許該文件訪問所需的文件。

我在這裏錯過了什麼?

public ActionResult ViewContent(int id) 
    { 
     const string pageBlobName = "121/HEEDENNL/story.html"; 

     CloudStorageAccount storageAccount = Common.Constants.Azure.ConnectionStringUrl; 

     CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); 
     //// Retrieve a reference to a container. 
     // CloudBlobContainer learningModulContainer = blobClient.GetContainerReference(Common.Constants.Azure.LearningModulesContainerName); 
     CloudBlobContainer learningModulContainer = blobClient.GetContainerReference("test"); 

     PrintBlobs(learningModulContainer); 

     CloudBlockBlob myindexfile = learningModulContainer.GetBlockBlobReference(pageBlobName); 

     SharedAccessBlobPermissions permission = SharedAccessBlobPermissions.None; 
     permission = SharedAccessBlobPermissions.Read; 


     var token = GetSasForBlob(myindexfile, permission,30); 
     //this isn't finished.....must get learning module 
     var module = DataAccessService.Get<LearningModule>(id); 

     var url = $"{Common.Constants.Azure.StorageAccountUrl}{"test"}/{module.ScormPackage.Path.Replace("index_lms", "story")}{token}"; 

     return Redirect(token); 
    } 

public static string GetSasForBlob(CloudBlockBlob blob, SharedAccessBlobPermissions permission, int sasMinutesValid) 
    { 
     // var sasToken = blob.GetSharedAccessSignature(new SharedAccessBlobPolicy() 
     var sasToken = blob.Container.GetSharedAccessSignature(new SharedAccessBlobPolicy() 
     { 
      Permissions = permission, 
      SharedAccessStartTime = DateTime.UtcNow.AddMinutes(-15), 
      SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(sasMinutesValid), 
     }); 
     return string.Format(CultureInfo.InvariantCulture, "{0}{1}", blob.Uri, sasToken); 
    } 

回答

0

如何,我可以得到所需要的story.html正常運行的所有文件,設置爲read訪問也?

首先,如果可能的話,你可以把這些CSS & JS &圖像等文件的allow-public-access container,你的html頁面引用。其次,你可以提供URL with SAS的blob資源,並在你的html頁面添加這樣的引用。

<link href="https://{storageaccount}.blob.core.windows.net/styles/Style1.css?st=2017-06-15T02%3A27%3A00Z&se=2017-06-30T02%3A27%3A00Z&sp=r&sv=2015-04-05&sr=b&sig=%2FWwN0F4qyoIH97d7znRKo9lcp84S4oahU9RBwHTnlXk%3D" rel="stylesheet" /> 

此外,如果你想託管您的Web應用程序,你可以嘗試使用Azure app service

+0

Hi @CsharpBeginner,有沒有更新?你能夠像預期的那樣訪問blob資源嗎? –