У меня есть функция Azure, работающая в плане обслуживания приложения. Это приложение-функция загружает файл из sftp и выполняет некоторый процесс / проверку, а затем загружает в хранилище BLOB-объектов.
Это работающий код, и мне пришлось внести некоторые изменения, чтобы мне пришлось сохранить физический файл FileStream. вместо MemoryStream. Это также работало в моей локальной среде, но после развертывания в Azure я получаю ошибку FileNotFound на этапе загрузки файла sftp.
Текст ошибки (отредактированные имена файлов / классов)
System.IO.FileNotFoundException: Could not find file 'D:\home\site\wwwroot\myfile.csv'.
File name: 'D:\home\site\wwwroot\myfile.csv'
at System.IO.FileStream.ValidateFileHandle(SafeFileHandle fileHandle)
at System.IO.FileStream.CreateFileOpenHandle(FileMode mode, FileShare share, FileOptions options)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
at MyProcessDataLoadProcess.DownLoadMyProcessFilesFromSftp.DownloadFileFromSftp(SftpClient sftp, SftpFile sftpFile, String localRootPath) in D:\a\1\s\MyProcessDataLoadProcess\DownLoadMyProcessFilesFromSftp.cs:line 173
at MyProcessDataLoadProcess.DownLoadMyProcessFilesFromSftp.Run(TimerInfo timerInfo, ILogger log, ExecutionContext context) in D:\a\1\s\MyProcessDataLoadProcess\DownLoadMyProcessFilesFromSftp.cs:line 106
Я уверен, что это как-то связано с разрешениями, потому что когда я пытался создать тестовый файл, используя простой dir . > test.txt из инструмента командной строки функций платформы, я получаю msgstr "система не может найти ошибку в файле". 
Я уверен, что это должно что-то делать с настройками, которые позволят записывать на локальный диск c, потому что я сделал PO C, используя другую подписку, где у меня есть полные разрешения. Я не уверен, что это можно настроить где-то в настройках приложения или нужно предоставить разрешения на уровне хранилища или на уровне подписки.
Обновление:
На данный момент я нашел обходной путь для использования временной папки с помощью Path.GetTempPath (). Тем не менее, я немного озадачен тем, что это ограничение мешает мне создать файл в папке root.