导出 (0) 打印
全部展开

在启动时使用本地存储来存储文件

更新时间: 2014年5月

可以使用本地存储资源来存储由启动任务创建的文件,你的应用程序稍后将访问这些文件。

若要使用启动任务中的本地存储资源,你需要在 ServiceDefinition.csdef 文件中创建 LocalStorage 元素,然后创建一个环境变量来引用本地存储资源位置。然后,启动任务和应用程序将能够读取文件并将文件写入本地存储资源。

若要创建本地存储资源,你必须编辑 ServiceDefinition.csdef 文件。如果“LocalResources”部分不存在,则将“LocalResources”部分添加到 ServiceDefinition.csdef 文件。然后在“LocalResources”部分中添加 LocalStorage 元素。为本地存储资源指定一个唯一名称,并为启动任务指定适当的大小。在此示例中,唯一名称是 StartupLocalStorage

若要创建将引用本地存储位置的环境变量,请将“环境”部分和“变量”部分添加到 ServiceDefinition.csdef 文件的“启动”部分。Variable 元素必须具有将用于启动任务的环境变量的唯一名称。在此示例中,将环境变量命名为“PathToStartupStorage”。

ServiceDefinition.csdef 文件的“变量”部分中,添加 RoleInstanceValue 元素。xPath 属性必须使用与 LocalStorage 元素中引用的相同的本地存储资源的唯一名称。本地存储资源的唯一名称必须位于 @name= 后,且必须在单引号中。在此示例中,xPath 属性是 "/RoleEnvironment/CurrentInstance/LocalResources/LocalResource[@name='StartupLocalStorage']/@path" 并包含本地存储资源名称 StartupLocalStorage

此处显示了 ServiceDefinition.csdef 文件的相关部分:

    <!-- Create the Local Storage used by the startup task. -->
    <LocalResources>
      <LocalStorage name="StartupLocalStorage" sizeInMB="5"/>
    </LocalResources>
    
    <Startup>
      <Task commandLine="Startup.cmd" executionContext="limited" taskType="simple">
        <Environment>
          
          <!-- Create the environment variable that informs the startup task where to find its Local 
               Storage. %PathToStartupStorage% resolves to the fully qualified path to the location 
               of the Local Storage.-->
          <Variable name="PathToStartupStorage">
            <RoleInstanceValue xpath="/RoleEnvironment/CurrentInstance/LocalResources/LocalResource[@name='StartupLocalStorage']/@path" />
          </Variable>
          
        </Environment>
      </Task>
    </Startup>

Startup.cmd 批处理文件使用 PathToStartupStorage 环境变量来在本地存储位置创建文件 MyTest.txt,如此处所示:

REM   Create a simple text file.

ECHO This text will go into the MyTest.txt file which will be in the    >  "%PathToStartupStorage%\MyTest.txt"
ECHO path pointed to by the PathToStartupStorage environment variable.  >> "%PathToStartupStorage%\MyTest.txt"
ECHO The contents of the PathToStartupStorage environment variable is   >> "%PathToStartupStorage%\MyTest.txt"
ECHO "%PathToStartupStorage%".                                          >> "%PathToStartupStorage%\MyTest.txt"

REM   Exit the batch file with ERRORLEVEL 0.

EXIT /b 0

若要访问本地存储资源,应用程序必须从 GetLocalResource 方法检索路径。之后,标准文件读取和写入操作将运行以读取和写入本地存储资源的内容。下面的示例演示如何从本地存储资源读取 MyTest.txt 的内容,并将该内容显示在 MVC 3 应用程序的主页上:

using Microsoft.WindowsAzure.ServiceRuntime;
using System;
using System.Text;
using System.Web.Mvc;

namespace StartupExercise.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            string SlsPath = RoleEnvironment.GetLocalResource("StartupLocalStorage").RootPath;

            string s = System.IO.File.ReadAllText(SlsPath + "\\MyTest.txt");

            ViewBag.Message = "Contents of MyTest.txt = " + s;

            return View();
        }
    }
}

另请参阅

Microsoft 正在进行一项网上调查,以了解您对 MSDN 网站的意见。 如果您选择参加,我们将会在您离开 MSDN 网站时向您显示该网上调查。

是否要参加?
显示:
© 2014 Microsoft