ExecutionContext可用于函数参数。
但是,通过依赖注入,包括函数的构造函数在内的其他方法不能使用它,如下所示:
public class FunctionClass
{
IOtherClass _otherclass;
public FunctionClass(ExecutionContext context, //excetpion
IOtherClass otherclass) //excetpion
{
_otherclass = IOtherClass otherclass
}
[FunctionName("Car")]
public async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]
HttpRequest req, ExecutionContext context)
{
}
}
public class OtherClass:IOtherClass
{
public OtherClass(ExecutionContext context) //excetpion
{}
}我需要访问ExecutionContext.FunctionAppDirectory,但不想传递ExecutionContext,因为我想使用IoC。
是否有其他方法可以获得ExecutionContext.FunctionAppDirectory的值
VS 2017
Azure Functon 2.x
发布于 2019-03-11 10:34:56
根据当前文档,只有在调用function方法时,ExecutionContext才在请求范围内可用。
[FunctionName("Car")]
public async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]
HttpRequest req,
ExecutionContext context //<--
) {
var path = context.FunctionAppDirectory;
//...
}在初始化function类时,它还不能在用于注入的构造函数中使用。
发布于 2021-02-03 13:32:53
我们可以使用ExecutionContextOptions来获取应用程序文件夹:
public class FunctionClass
private ExecutionContextOptions context;
public FunctionClass(IOptions<ExecutionContextOptions> executionContext) {
this.context = executionContext.Value;
var path = Path.GetFullPath(Path.Combine(context.AppDirectory, "extra.json"));
}
}注意:以上功能使用VS 2019和Azure Functions 3.x运行
请参见:
https://stackoverflow.com/questions/55093404
复制相似问题