问题描述
我构建了一个Azure Function应用(v2).所有功能所需的配置任务都在Setup类中完成,该类的结构如下:
I build an Azure Function App (v2). Configuration tasks necessary for all functions are done in a Setup class that is structured like the following:
[assembly: WebJobsStartup(typeof(Startup))]
internal class Startup : IWebJobsStartup
{
public void Configure(IWebJobsBuilder builder)
{
Configuration = new ConfigurationBuilder()
.SetBasePath(<functionAppDirectory>)
.AddJsonFile("local.settings.json")
.Build();
builder.AddDependencyInjection(ConfigureServices);
}
public IConfiguration Configuration { get; set; }
private void ConfigureServices(IServiceCollection services)
{
var connection = Configuration.GetConnectionString("<myconnection-string>");
...
}
}
在ConfigureServices
中,我想从配置文件中读取连接字符串.为此,已使用SetBasePath
指定了功能应用程序基本文件夹.但是我发现没有办法访问此路径.根据 https://github .com/Azure/azure-functions-host/wiki/获取有关当前正在运行的功能的信息,可以将ExecutionContext
插入功能中,其中包含所需的路径.但是,如何在Startup
类中访问ExecutionContext
?
In ConfigureServices
I want to read a connection string from a configuration file. For that the function app base folder has be specified with SetBasePath
. But I found no way to get access to this path. According to https://github.com/Azure/azure-functions-host/wiki/Retrieving-information-about-the-currently-running-function an ExecutionContext
can be injected in a function, which contains the path need. But how do I access ExecutionContext
in my Startup
class?
推荐答案
您可以在启动文件中使用这段代码.今天,我刚刚为我的项目对其进行了测试,它可以在云和本地环境中工作.
You can use this piece of code in your startup file.I have just tested it today for my project and it works on both cloud and local.
var executioncontextoptions = builder.Services.BuildServiceProvider()
.GetService<IOptions<ExecutionContextOptions>>().Value;
var currentDirectory = executioncontextoptions.AppDirectory;
这篇关于获取Azure Function App v2的根目录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!