Windows Azure本地Blob存储访问?

时间:2012-05-16 11:14:54

标签: azure local azure-storage azure-storage-blobs

当我打电话时,我不明白为什么:

LocalResource ls = RoleEnvironment.GetLocalResource(" mystorage");

ls.RootPath;

未创建本地文件夹,我不明白它是如何工作的。 对我来说,它是一个创造的本地路径。所以我应该。

C:\资源\目录\ xxx.HelloAzureWeb.mystorage \

但是没有这样的文件。

修改 我想要做的是存储一些xml场景保存文件。在Unity应用程序中,我需要发布(保存它们)并获取(使用它们)这些文件。

4 个答案:

答案 0 :(得分:2)

您对创建本地存储有一些误解。当您调用下面的代码时,它不会为您创建本地存储,而是返回给您一个在应用程序设置期间创建的本地存储对象的实例:

LocalResource ls = RoleEnvironment.GetLocalResource("mystorage");

要在应用程序中定义本地存储,您可以直接在CSDEF中添加以下内容(以下设置将创建本地存储名称mystorage,大小为2GB,如果任何情况下VM重新启动或角色重新启动,则本地存储将不会干净并且内容仍然存在:

<LocalResources>
 <LocalStorage cleanOnRoleRecycle="false" name="mystorage" sizeInMB="2048" />
</LocalResources>

要添加本地存储空间,您还可以选择 - &gt;&gt; [Visual studio&gt;角色属性&gt;本地存储&gt; “添加本地存储”选项。

在Windows Azure应用程序中定义本地存储时,将在驱动器C:中添加一个新文件夹,如下所示:在VM VM启动期间在VM中配置角色时,这将完成:

[In Azure VM]
C:\Resources\directory\[Your_deploymentID].[your_webrolename]_[Role_Instance_Count]\

[In Compute Emulator]
// Lunch your application in Compute Emulator and then open "Compute Emulator UI" to see the Local Storage Path in the command window related to your instance:
C:\Users\avkashc\AppData\Local\dftmp\Resources\3503509c-2112-45ea-8d63-377fe9f78491\directory\mystorage\

在ServiceDefinition.CSDEF中添加上述本地存储特定设置后,将创建本地存储,然后以下代码将起作用:

LocalResource ls = RoleEnvironment.GetLocalResource("mystorage");
ls.Root // returns the correct local storage path
// Now you can use ls to read/write your data.

答案 1 :(得分:2)

对我来说,我存储到存储模拟器blob的文件会进入C:\Users\[username]\AppData\Local\DevelopmentStorage\LDB\BlockBlobRoot。不幸的是,它们并不是很有用。它只是一堆GUID,但文件大小看起来是正确的。

答案 2 :(得分:1)

以下是您在ASP.NET Web角色中访问本地存储的方法:

第1步:创建一个非常简单的ASP.NET Web角色项目

步骤2:在servicedefinition.csdef中包含以下内容:

<LocalResources>
 <LocalStorage name="mystorage" cleanOnRoleRecycle="false" sizeInMB="2096" />
</LocalResources>

步骤3:在任何aspx中添加以下代码(在本例中为about.aspx)

<div>
  Local Storage file content: <b><asp:Label ID="fileContent" runat="server" /></b>
</div>

步骤4:在任何aspx.cs中添加以下代码(在本例中为about.aspx.cs):

protected void Page_Load(object sender, EventArgs e)
{
        LocalResource myStorage = RoleEnvironment.GetLocalResource("mystorage");
        string filePath = Path.Combine(myStorage.RootPath, "Lesson.txt");
        File.WriteAllText(filePath, "First Lesson");
        fileContent.Text = File.ReadAllText(filePath);

}

就是这样。 我已经在计算模拟器和云中测试了这段代码,它确实有效。

答案 3 :(得分:0)

使用存储模拟器时,本地资源分配只是一个文件目录。根路径与您描述的路径略有不同,但您应该能够导航到本地计算机上的该目录,该目录最初将为空。您在\ users \ you \ AppData(这是一个隐藏目录)下看到它。

哦,本地资源与Blob存储无关。在Windows Azure中,它只是具有特定大小配额的本地连接磁盘资源。与Blob存储不同,它是非持久存储。非常适合临时文件写入,缓存等,并且比Blob存储更快,因为它是本地磁盘,但对于任何需要保留的内容,您都要考虑Blob。