2

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

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

ls.RootPath;

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

C:\Resources\directory\xxx.HelloAzureWeb.mystorage\

但是没有这样的文件。

编辑: 我想要做的是存储一些 xml 场景保存文件。在 Unity 应用程序中,我需要发布(保存)和获取(使用)这些文件。

4

4 回答 4

2

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

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

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

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

要添加本地存储,您还可以选择 ->> [ Visual Studio > Role Properties > Local Storage > Add Local Storage ] 选项。

当您在 Windows Azure 应用程序中定义本地存储时,将在 Azure VM 上的驱动器 C: 中添加一个新文件夹,如下所示,这是在 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.
于 2012-05-16T15:13:16.920 回答
2

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

于 2012-10-25T19:33:23.000 回答
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);

}

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

于 2012-05-16T17:50:42.697 回答
0

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

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

于 2012-05-16T13:42:50.707 回答