我正在阅读article。
我有一个名为&#34的天蓝色容器;测试"在azure中设置为private。 该容器中有一个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 :(得分:0)
如何才能获得story.html正常运行所需的所有文件,同时设置为读取权限?
首先,如果可能,您可以将html页面引用的这些css&amp; js&amp; image等文件放在allow-public-access container中。
其次,你可以提供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。