Azure 函数在错误的位置搜索文件

Azure Function searches File in a Wrong Place

我有一个 Azure 函数 (C# v3),它使用位于 .\Assets\somefile.txt 的本地文本文件。该文件有 属性 Copy always 并且在我的本地计算机上 运行 时可以正确看到。但是,当部署到 Azure Function 应用程序时,该文件应位于 C:\home\site\wwwroot\Assets\somefile.txt 但 运行 函数看不到它并写入一条错误日志消息 Could not find a part of the path 'C:\Program Files (x86)\SiteExtensions\Functions.1.3bit\Assets\somefile.txt'.

如何在不对文件的完整路径进行硬编码的情况下实现查看文件的功能(反正在我的本地机器上是不同的,我想了解问题的实际根本原因)。

有几种方法可以获取函数执行根路径。一种是在你的函数方法中添加一个 ExecutionContext parameter 并读取 FunctionAppDirectory 值。

public static string Run(TimerInfo timer, ExecutionContext context)
{

    var executionRoot = context.FunctionAppDirectory;
    var filePath = Path.Combine(executionRoot, "Assets", "somefile.txt");
    
    ...
}

或者从 HOME 环境变量构造基本路径:

public static string Run(TimerInfo timer)
{

    var executionRoot = $"{Environment.GetEnvironmentVariable("HOME")}/site/wwwroot";
    var filePath = Path.Combine(executionRoot, "Assets", "somefile.txt");
    
    ...
}