我怀疑。
我有一个代码,用于创建文件“foo.txt”,然后使用UploadFile()将其复制到blob。
如果我不想要和天蓝色的概念我不能在“c:\”中创建这个文件?
我不得不在ServiceDefinition.csdef中使用本地存储,并在azureLocalResource.RootPath中创建它。
但是有一个用于写入的c:\驱动器(操作系统的d:\和代码的e:\),不是吗?
它有什么用?
我们可以在启动任务中使用它吗?
我问,因为我相信代码今天用c:\ util运行 而且我无法找到为什么类似的代码在新的工作者角色中不起作用 (这是文件和目录问题,而不仅仅是文件)
[答案]
我可以在c中创建此文件:但强烈建议使用本地存储API,因为驱动器号并不总是相同(例如重启后)。
本地存储只是使用当前实例的读取和写入驱动器的捷径
在启动任务的特定情况下,我们可以通过两种方式访问此存储:使用ac#program / script中的azure API(请参阅this topic)或使用环境变量(请参阅this topic)。
答案 0 :(得分:8)
您不想将自己绑在固定的驱动器上。确实,C:\大多数情况下是数据磁盘,D:\大部分时间是OS和E:\是代码所在的大部分时间。
但你不能指望这一点,这就是我大部分时间都说的原因。就像Ryan解释here一样,重启后应用程序磁盘可能会从E:\更改为F:\,同样 适用于您的数据磁盘。只有 LocalResource 可以告诉您可以保存文件的位置,因此我建议您使用它。
如果您有需要处理文件的启动任务,您还应该使用LocalResources。这可以通过使用PowerShell:http://blog.smarx.com/posts/using-a-local-storage-resource-from-a-startup-task
来实现答案 1 :(得分:2)
我建议您使用LocalStorage,它的目的是通过使用api,您可以检索路径/驱动器,而不是对特定驱动器位置具有硬编码依赖性。这也有助于避免任何权限问题,因为LocalStorage将在运行您的角色的进程的beck和调用。
答案 2 :(得分:0)
您是否可以将文件创建为文件流然后上传文件?还请考虑在多个实例上运行辅助角色的含义,因为对保存到C:\的文件的引用可能不存在,具体取决于角色所在的实例。 LocalResource最适合这个例子。
启动任务通常用于执行批处理文件,因此您可以运行使用cerebrata cmdlets上传文本文件的PowerShell脚本。