当我打电话时,我不明白为什么:
LocalResource ls = RoleEnvironment.GetLocalResource(" mystorage");
ls.RootPath;
未创建本地文件夹,我不明白它是如何工作的。 对我来说,它是一个创造的本地路径。所以我应该。
C:\资源\目录\ xxx.HelloAzureWeb.mystorage \
但是没有这样的文件。
修改 我想要做的是存储一些xml场景保存文件。在Unity应用程序中,我需要发布(保存它们)并获取(使用它们)这些文件。
答案 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。