C# 在Azure函数应用程序中全局获取ExecutionContext
我有函数应用程序,在一个助手类中,它将为我准备一个文件并存储它,我想读取项目文件 我尝试了许多方法,例如(AppDomain、AppContext等)和其他许多方法,由于它是无服务器的,program.cs与它运行的函数位于不同的目录。我想要的是WebRoot目录 我找到了这个 这给了我想要的正确路径,通过使用FunctionAppDirectory的wwwroot 问题是我需要将ExecutionContext传递给run函数,然后我需要将它传递给Helper类,我无法直接从Helper类读取它。我在很多地方都有这个 如何在整个应用程序/类中实现这一点C# 在Azure函数应用程序中全局获取ExecutionContext,c#,azure,azure-functions,azure-webjobs,executioncontext,C#,Azure,Azure Functions,Azure Webjobs,Executioncontext,我有函数应用程序,在一个助手类中,它将为我准备一个文件并存储它,我想读取项目文件 我尝试了许多方法,例如(AppDomain、AppContext等)和其他许多方法,由于它是无服务器的,program.cs与它运行的函数位于不同的目录。我想要的是WebRoot目录 我找到了这个 这给了我想要的正确路径,通过使用FunctionAppDirectory的wwwroot 问题是我需要将ExecutionContext传递给run函数,然后我需要将它传递给Helper类,我无法直接从Helper类读取
谢谢。解决问题的一个方法是
public interface IExecutionContext
{
Guid InvocationId { get; set; }
string FunctionName { get; set; }
string FunctionDirectory { get; set; }
string FunctionAppDirectory { get; set; }
}
public class FunctionAppExecutionContext : ExecutionContext, IExecutionContext
{
}
services.AddSingleton()代码>
然后,在助手类中,使用接口隐藏实现。在本例中,它是函数SDKs ExecutionContext。重复类实现步骤,为其他库实现类。是的,回答得很好,我知道我可以做到,但问题是函数应用程序没有启动类program.cs。例如,它是一种无服务器类型的应用程序。我不确定应该在哪里添加服务。AddSinletony您需要将DI实现为自定义解决方案,例如,或者干脆跳过它(这就是我将其标记为可选的原因)。您可以从ExecutionContext创建FunctionAppExecutionContext类型的新实例,或使用AutoMapper等进行映射,并将该接口作为辅助类中的参数类型(无论是否为静态)。