问题描述
我构建了一个 Azure Function App (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/Retrieving-information-about-the-currently-running-function 可以将 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 的根目录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!