3

我有功能应用程序,并且在一个准备文件并为我存储它的助手类中,我想读取项目文件

我尝试了很多方法,例如(AppDomain、AppContext、....等)和许多其他方法,并且由于它是无服务器的,因此 program.cs 与运行它的函数位于不同的目录中。我想要的是 WebRoot 目录。

我找到了这个https://github.com/Azure/azure-functions-host/wiki/Retrieving-information-about-the-currently-running-function 这给了我我想要的正确路径,使用 FunctionAppDirectory 的 wwwroot .

问题是我需要将 ExecutionContext 传递给 run 函数,然后我需要将它传递给 Helper 类,我无法直接从帮助类中读取它。我在多个地方都有这个。

我如何在应用程序/类中全局获取它。

谢谢。

4

1 回答 1

3

解决您的问题的一种方法是

  1. 定义一个全局接口:

    public interface IExecutionContext
    {
        Guid InvocationId { get; set; }
        string FunctionName { get; set; }
        string FunctionDirectory { get; set; }
        string FunctionAppDirectory { get; set; }
    }
    
  2. 为 Function App 添加实现:

    public class FunctionAppExecutionContext : ExecutionContext, IExecutionContext
    {
    }
    
  3. 为 Function App 添加 DI 配置(可选):

    services.AddSingleton<IExecutionContext, FunctionAppExecutionContext>();

然后,在您的辅助类中,使用接口隐藏实现。在这种情况下,它是 Functions SDKs ExecutionContext。重复类实现步骤以实现其他库的类。

于 2018-10-07T17:11:01.933 回答