2

我很怀疑。

我有一个代码,它创建一个文件“foo.txt”,然后使用 UploadFile() 将它复制到一个 blob。
如果我不了解天蓝色的概念,我不能在 "c:\" 中创建这个文件吗?
我必须在我的 ServiceDefinition.csdef 中使用本地存储,并在 azureLocalResource.RootPath 中创建它。

但是有 ac:\ 用于写入的驱动器(ad:\ 用于操作系统,ae:\ 用于代码),不是吗?
它有什么用?
我们可以在启动任务中使用它吗?

我问是因为我相信今天的代码是用 c:\ util 运行的。
而且我找不到为什么类似的代码在新的工人角色中不起作用。
(这是文件和目录问题,而不仅仅是文件)

[Answer]
我可以在 c: 中创建这个文件,但强烈建议使用本地存储 API,因为驱动器号并不总是相同的(例如重新启动后)。
本地存储只是使用当前实例的读写驱动器的捷径。
在启动任务的特定情况下,我们可以通过 2 种方式访问​​此存储:使用 ac# 程序/脚本中的 azure API(请参阅本主题)或使用环境变量(请参阅本主题)。

4

3 回答 3

8

您不想将自己束缚在固定的驱动器字母上。确实,C:\ 大部分时间是数据磁盘,D:\ 大部分时间是操作系统,E:\ 大部分时间是您的代码所在的位置。

但你不能指望这一点,这就是我大部分时间说的原因。就像 Ryan在此处解释的那样,您的应用程序磁盘可能会在重新启动后从 E:\ 更改为 F:\,同样的事情也可能适用于您的数据磁盘。只有LocalResource可以告诉您可以将文件保存在哪里,所以我建议您使用它。

如果您有需要处理文件的启动任务,您还应该使用 LocalResources。这可以通过使用 PowerShell:http: //blog.smarx.com/posts/using-a-local-storage-resource-from-a-startup-task

于 2012-07-31T12:54:06.113 回答
2

我建议您使用 LocalStorage,它旨在用于此目的,并且通过使用 api,您可以检索路径/驱动器,而不是对特定驱动器位置进行硬编码依赖。这也有助于避免任何权限问题,因为 LocalStorage 将听命于运行您的角色的进程。

于 2012-07-31T12:54:46.450 回答
0

您不能将文件创建到文件流然后上传文件吗?还请考虑在多个实例上运行辅助角色的影响,因为对保存到 C:\ 的文件的引用可能不存在,具体取决于角色所在的实例。LocalResource 最适合这个例子。

启动任务通常用于执行批处理文件,因此您可能会运行一个使用cerebrata cmdlet上传文本文件的 powershell 脚本。

于 2012-08-01T01:18:54.533 回答