【问题标题】:Windows Azure , blob not loaded to LocalResourceWindows Azure,blob 未加载到 LocalResource
【发布时间】:2011-09-23 17:30:34
【问题描述】:

我正在尝试实现 Using local storage with BLOB storage 。 我经历了http://allcomputers.us/windows_azure/using-local-storage-with-blob-storage-(part-1)---using-a-local-cache---defining-and-accessing-local-storage.aspx 并将我的 GetBlob 方法重构如下。

public Stream GetBlob(string blobAddress, string CONTAINER_NAME)
    {
        MemoryStream stream = null;
        stream = CheckInLocalCache(blobAddress);
        if (stream==null)
        {
            CloudBlobContainer container = Client.GetContainerReference(CONTAINER_NAME);
            if (container != null)
            {
                stream = new MemoryStream();
                container.GetBlobReference(blobAddress).DownloadToStream(stream);
            }
        }

        return stream;
    }

    private static MemoryStream CheckInLocalCache(string blobAddress)
    {
        MemoryStream localBlobStream=null;
        LocalResource localBlobCache = RoleEnvironment.GetLocalResource("localBlobCache");
        if (localBlobCache != null)
        {
            string localCacheRootDirectory = localBlobCache.RootPath;
            string blobName = blobAddress.Split('/')[blobAddress.Split('/').Length - 1];
            if (File.Exists(localBlobCache.RootPath + blobName))
            {
                localBlobStream = new MemoryStream(File.ReadAllBytes(localBlobCache.RootPath + blobName));
            }               
        }
        return localBlobStream;
    }

在配置文件中我添加了这个

<WebRole name="ServiceRuntimeWebsite">
   <LocalResources>
      <LocalStorage name="localBlobCache"
                    cleanOnRoleRecycle="true"
                    sizeInMB="100" />
   </LocalResources>
</WebRole>

当我在开发环境中运行我的项目时,我看到文件夹“localBlobCache”已创建。但即使在多次从 azure 加载 blob 之后,它也从未真正加载到我的本地存储中。谁能告诉我怎么了?

【问题讨论】:

    标签: azure azure-storage azure-blob-storage


    【解决方案1】:

    看起来您共享的代码中没有任何内容将文件保存到缓存目录。您可能需要 GetBlob 中的某些内容,如果 Blob 尚不存在,则将其保存到文件中。

    【讨论】:

    • 我应该为此编写代码还是 wat ? .这不是 azure 自动处理的吗? .如果我明确编写代码以保存在缓存目录中。将其存储在缓存中并通过 localBlobCache.RootPath 检索的必要性是什么。我可以使用任何其他目录并为此编写自定义代码吗?
    • Windows Azure(或存储客户端库)没有内置任何东西可以将内容保存到本地磁盘,所以是的,您必须自己构建。使用声明的 LocalStorage 资源的原因是因为这可以保证 VM 上的磁盘空间。如果你只是写到 C: 驱动器上的一个随机目录,你可能会也可能不会发现你有足够的空间。
    猜你喜欢
    • 1970-01-01
    • 2014-02-10
    • 2014-09-20
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多