繁体   English   中英

从 Visual Studio 发布代码时如何将文件上传到 Azure 函数?

[英]How do I upload file to Azure function while publishing the code from Visual Studio?

我创建了一个Azure Function ,它依赖于ini文件。

 public class DataProcessingFunction
 {
    FunctionName("DataProcessingFunction")]
    public async Task Run([EventGridTrigger]EventGridEvent eventGridEvent,ILogger log)
    {
        string iniFolderPath = $@"{Directory.GetCurrentDirectory()}\Ini\";
        string iniFileName = "Sample.ini";
        var iniConfig = FileManager.ReadFile(iniFolderPath, iniFileName);
    }
 }

在将代码发布到 Azure 函数时,我在 Visual Studio 中选择了Copy if never选项此外,我尝试选择Embedded Resource 但是我找不到文件

在此处输入图片说明

我得到一个例外

文件未找到。

Azure 门户中的添加/上传选项被禁用,因为我正在从 Visual Studio 发布该功能

问题:我是否需要将文件上传到 blob,然后在代码中引用它?

最后的结论是文件上传成功,问题是读取路径时出错。 在 Azure 中使用Directory.GetCurrentDirectory()似乎不可靠。

我刚刚试了一下, Directory.GetCurrentDirectory()在 azure 中得到了错误的路径(我打印出来并显示"D:\\Program Files (x86)\\SiteExtensions\\Functions\\2.0.12961\\32bit" ,这显然不是当前文件夹),并最终无法找到 Sample.ini 文件。 由于该函数是您自己的,您可以将路径设置为类似"D:\\\\home\\\\site\\\\wwwroot>\\\\Ini\\\\Sample.ini" 这应该读取 Sample.ini 文件。

这是这样做的方法。

ExecutionContext context; // 您可以修改您的函数方法以采用类型为 ExecutionContext 的附加参数

public static async Task Run(<.... Other parameters>, ILogger log, ExecutionContext context)

然后通过组合函数目录构建路径,“模板”是我在函数应用程序项目中与其他代码一起部署的目录,emails.html 是模板中的文件(对于每个必须设置的文件,复制-始终或在属性中复制如果更新。)。 您可以使用 .ini 文件代替模板。

string templatePath = Path.Combine(context.FunctionAppDirectory, "Templates", "emails.html");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM