我有功能Apps,在一个帮助器类中,该类将准备文件并为我存储它,我想读取项目文件
我尝试了许多方法,例如(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类,我无法直接从helper类中读取它。我在多个地方都有这个。
我如何在应用程序/类之间全局获取此信息。
谢谢。
答案 0 :(得分:0)
解决问题的一种方法是
定义一个全局接口:
public interface IExecutionContext
{
Guid InvocationId { get; set; }
string FunctionName { get; set; }
string FunctionDirectory { get; set; }
string FunctionAppDirectory { get; set; }
}
为Function App添加实现:
public class FunctionAppExecutionContext : ExecutionContext, IExecutionContext
{
}
为Function App添加DI配置(可选):
services.AddSingleton<IExecutionContext, FunctionAppExecutionContext>();
然后,在您的帮助器类中,使用该接口隐藏实现。在这种情况下,即为Function SDK的ExecutionContext。重复类实现步骤以实现其他库的类。