Azure: рабочая роль запись на c: или локальное хранилище
Я в сомнениях.
У меня есть код, который создает файл " foo.txt", а затем скопируйте его в большой двоичный объект с помощью UploadFile ().
Если я undesrtand ну концепция azure я не могу создать этот файл в "c:"?
Я обязан использовать локальное хранилище в своем определении сервиса.csdef, и создайте его в azureLocalResource.Корневая тропа.
Но есть диск c: для записи (A d: для ОС и A e: для кода), не так ли?
Какая от него польза ?
Можем ли мы просто использовать его в задаче запуска ?
Я спрашиваю потому что я считаю, что этот код работал с c: util в этот день.
И я не могу понять, почему подобный код не работает в новой рабочей роли.
(Это проблема файлов и каталогов, а не только файлов)
[Ответ]
Я могу создать этот файл в c: но настоятельно рекомендуется использовать local storage API, потому что буква диска не всегда одинакова (например, после перезагрузки).
Локальное хранилище - это всего лишь короткий путь для использования диска чтения и записи текущего экземпляра.
В конкретных случаях из задачи запуска мы можем получить доступ к этому хранилищу двумя способами: с помощью API azure в программе/скрипте c# (см. Этот раздел) или с помощью переменных среды (см. этот раздел).
3 ответа:
Вы не хотите привязывать себя к фиксированным приводным двигателям. Это правда, что C:\ большую часть времени занимает диск с данными, D:\ большую часть времени занимает ОС, а E:\ большую часть времени занимает ваш код.
Но вы не можете рассчитывать на это, вот почему я говорю большую часть времени. Как объясняет Райан здесь , вполне возможно, что ваш диск приложений изменится с E:\ на F:\ после перезагрузки, ну то же самое может применяться для вашего диска данных. Только LocalResource может я скажу вам, где вы можете сохранить ваши файлы, поэтому я предлагаю вам использовать его.Если у вас есть задачи запуска, которые должны работать с файлами, вы также должны работать с локальными ресурсами. Это возможно с помощью PowerShell: http://blog.smarx.com/posts/using-a-local-storage-resource-from-a-startup-task
Я бы рекомендовал вам использовать LocalStorage, предназначенный для этой цели, и с помощью api вы можете получить путь / диск вместо того, чтобы иметь жестко закодированную зависимость от конкретного расположения диска. Это также помогает избежать каких-либо проблем с разрешениями, поскольку LocalStorage будет находиться в распоряжении процесса, выполняющего вашу роль.
Не можете ли вы создать свой файл в файловый поток, а затем загрузить файл? Пожалуйста, также рассмотрите последствия запуска рабочей роли в нескольких экземплярах, поскольку ссылка на файл, сохраненный в C:\, может не существовать в зависимости от экземпляра, на котором находится роль. LocalResource лучше всего подходит для этого примера.
Задача запуска обычно используется для выполнения пакетных файлов, поэтому вы можете запустить сценарий powershell, который загружает текстовый файл с помощью командлетов cerebrata.