Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法通过其URL访问LocalStorage中的Azure blob_C#_Azure_Azure Storage Blobs - Fatal编程技术网

C# 无法通过其URL访问LocalStorage中的Azure blob

C# 无法通过其URL访问LocalStorage中的Azure blob,c#,azure,azure-storage-blobs,C#,Azure,Azure Storage Blobs,我正在创建一个Web应用程序,作为我任务的一部分。任务是将音频剪辑上载到ASP页面,然后Web作业将从中生成一个20秒的示例,然后显示在同一页面上。我最终需要将其部署到Azure,但目前我正在使用Azure存储模拟器的本地存储 页面加载正确,音频上传到Blob容器中,样本生成并放置在正确的文件夹中。但是,这些示例没有加载到播放器中,我无法通过浏览器访问这些示例,即使使用我从存储中的blob中读取的URL也是如此 在应用程序和Web作业都运行的情况下,当我将该URL输入浏览器时,会显示以下消息:

我正在创建一个Web应用程序,作为我任务的一部分。任务是将音频剪辑上载到ASP页面,然后Web作业将从中生成一个20秒的示例,然后显示在同一页面上。我最终需要将其部署到Azure,但目前我正在使用Azure存储模拟器的本地存储

页面加载正确,音频上传到Blob容器中,样本生成并放置在正确的文件夹中。但是,这些示例没有加载到播放器中,我无法通过浏览器访问这些示例,即使使用我从存储中的blob中读取的URL也是如此

在应用程序和Web作业都运行的情况下,当我将该URL输入浏览器时,会显示以下消息:

我的第一反应是,我没有访问容器所需的权限。但是,据我所知,权限已正确配置。下面是我的BlobStorageService类,它处理容器的权限:

namespace Sampler
{
    public class BlobStorageService
    {
        public CloudBlobContainer getCloudBlobContainer()
        {
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse
                (ConfigurationManager.ConnectionStrings["AzureStorage"].ToString());

            CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
            CloudBlobContainer container = blobClient.GetContainerReference("audiostorage");

            if (container.CreateIfNotExists())
            {
                BlobContainerPermissions permissions = container.GetPermissions();
                permissions.PublicAccess = BlobContainerPublicAccessType.Container;
                container.SetPermissions(permissions);
            }
            return container;
        }
    }

因此,据我所知,整个容器的权限应该是公共的,我用于该容器的代码直接来自Microsoft文档。非常感谢您对下一步行动的任何建议,并乐意发布您可能需要查看的更多代码

您的代码中似乎存在逻辑问题。如果容器存在,则容器的权限将不是公共的,默认为私有的。如果我们尝试在私有容器中列出blob,将出现“未找到”问题。请尝试使用以下代码。或者我们可以使用设置容器public并重试

 public CloudBlobContainer getCloudBlobContainer()
  {
      CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["AzureStorage"].ToString());
      CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
      CloudBlobContainer container = blobClient.GetContainerReference("audiostorage");
      container.CreateIfNotExists(); // remove the if condition
      BlobContainerPermissions permissions = container.GetPermissions();
      permissions.PublicAccess = BlobContainerPublicAccessType.Container;
      container.SetPermissions(permissions);  
      return container;
   }

也许是个愚蠢的问题,但是web应用程序和模拟器是否与您用来访问应用程序的浏览器在同一台机器上运行?JLRishe-是的,它们都在同一台机器上本地运行。谢谢