2017-06-15 7 views
0

これを読んでいるこれはarticleです。Azureコンテナのアクセス許可

私は空白のプライベートに設定されている "テスト"と呼ばれる紺碧の容器があります。 そのコンテナには "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に必要なすべてのファイルを取得することができ、また、アクセスを読み取るように設定されてどのように

可能な場合はまず、あなたはこれらのCSSに& jsのallow-public-access containerでHTMLページ参照&画像などのファイルを置くことができます。

第2に、BLOBリソースのURL with SASを提供し、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" /> 

さらに、ウェブアプリケーションをホストする場合は、Azure app serviceを試してみてください。

+0

こんにちは@CsharpBeginner、更新はありますか?期待どおりのBLOBリソースにアクセスできますか? –

関連する問題