gpt4 book ai didi

azure - 无法在 Azure Functions 中创建文件

转载 作者:行者123 更新时间:2023-12-04 12:37:33 25 4
gpt4 key购买 nike

我有一个在应用服务计划上运行的 Azure 功能。此函数应用从 sftp 下载文件并进行一些处理/验证,然后上传到 blob 存储。

这是工作代码,我必须进行一些更改,以便我必须保存物理文件 FileStream 而不是 MemoryStream。这在我的本地环境中也有效,但一旦部署到 Azure,我在下载 sftp 文件的步骤中收到 FileNotFound 错误。

错误文本(编辑的文件/类名称)

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

我确信这与权限有关,因为当我尝试使用平台功能命令行工具中的简单目录 .> test.txt 创建测试文件时,我得到了“系统找不到指定的文件错误”。 enter image description here

我确信这与允许写入本地光盘的设置有关,因为我使用不同的订阅进行了 POC,其中我拥有完全权限。我不确定这是否可以在应用程序设置中的某个位置进行配置,或者是否需要授予存储级别或订阅级别权限的权限。

更新:

目前,我找到了通过使用 Path.GetTempPath() 来使用临时文件夹的解决方法。但是,我有点困惑是什么限制阻止我在根文件夹中创建文件。

最佳答案

WEBSITE_RUN_FROM_PACKAGE 应用设置值为 1 时,zip 部署 API 会将您的包复制到 d:\home\data\SitePackages 文件夹,而不是将文件解压到 d:\home\site\wwwroot。它还创建 packagename.txt 文件。重新启动后,该包将作为只读文件系统安装到 wwwroot。 Run From Package 使 wwwroot 变为只读,因此将文件写入此目录时会收到错误消息。

关于azure - 无法在 Azure Functions 中创建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59768096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com