C# Azure容器权限

C# Azure容器权限,c#,azure,azure-storage,azure-storage-blobs,C#,Azure,Azure Storage,Azure Storage Blobs,我正在读这个 我有一个名为“test”的azure容器,它在azure中设置为private。 该容器中有一个scorm包“121/HEEDENNL/story.html” 我正在使用下面的代码设置文件夹的读取权限。 但是,该story.html文件需要几个其他文件才能正常运行。 故事页面打开,不返回403或404。 但它试图引用以使页面正常运行的文件未加载 如何使story.html正常运行所需的所有文件也设置为read access 我认为更改容器权限将允许该文件访问所需的文件 我错过了什么

我正在读这个

我有一个名为“test”的azure容器,它在azure中设置为private。 该容器中有一个scorm包“121/HEEDENNL/story.html”

我正在使用下面的代码设置文件夹的读取权限。 但是,该story.html文件需要几个其他文件才能正常运行。 故事页面打开,不返回403或404。 但它试图引用以使页面正常运行的文件未加载

如何使story.html正常运行所需的所有文件也设置为read access

我认为更改容器权限将允许该文件访问所需的文件

我错过了什么

    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);
    }
public ActionResult视图内容(int-id)
{
const string pageBlobName=“121/HEEDENNL/story.html”;
CloudStorageAccount-storageAccount=Common.Constants.Azure.ConnectionStringUrl;
CloudBlobClient blobClient=storageAccount.CreateCloudBlobClient();
////检索对容器的引用。
//CloudBlobContainer LearningModuleContainer=blobClient.GetContainerReference(Common.Constants.Azure.LearningModuleContainerName);
CloudBlobContainer LearningModuleContainer=blobClient.GetContainerReference(“测试”);
PrintBlobs(learningmodulecontainer);
CloudBlockBlob myindexfile=LearningModuleContainer.GetBlockBlobReference(pageBlobName);
SharedAccessBlobPermissions权限=SharedAccessBlobPermissions.None;
权限=SharedAccessBlobPermissions.Read;
var token=GetSasForBlob(myindexfile,权限,30);
//此操作尚未完成…必须获取学习模块
var module=DataAccessService.Get(id);
var url=$“{Common.Constants.Azure.StorageAccountUrl}{“test”}/{module.ScormPackage.Path.Replace(“index_lms”,“story”)}{token}”;
返回重定向(令牌);
}
公共静态字符串GetSasForBlob(CloudBlockBlob blob,SharedAccessBlobPermissions权限,int-sasMinutesValid)
{
//var sasToken=blob.GetSharedAccessSignature(新的SharedAccessBlobPolicy()
var sasToken=blob.Container.GetSharedAccessSignature(新的SharedAccessBlobPolicy()
{
权限=权限,
SharedAccessStartTime=DateTime.UtcNow.AddMinutes(-15),
SharedAccessExpiryTime=DateTime.UtcNow.AddMinutes(sasMinutesValid),
});
返回string.Format(CultureInfo.InvariantCulture,“{0}{1}”,blob.Uri,sasToken);
}
如何使story.html正常运行所需的所有文件也设置为read access

首先,如果可能的话,您可以将html页面引用的css&js&image等文件放在一个文件夹中

其次,您可以提供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应用程序,您可以尝试使用。

Hi@csharp初学者,有任何更新吗?您现在能够按预期访问blob资源吗?