我正在研究如何在.Net Core中加载启动配置.我注意到有不同的方法可以做到这一点,我已经看到了XML,JSON,init文件,以及位于内存中的Dictionary(稍后我会回到这里).我正在使用类似下面的代码:
new ConfigurationBuilder().AddJsonFile("file.json").Build();
Run Code Online (Sandbox Code Playgroud)
所有这些都没关系,但是,有没有办法从JSON字符串加载该配置?我的意思是,我不想将json存储在临时文件中,因为它是一个实时构建的文件,它没有任何意义.
关于位于记忆中的字典.它很容易手动构建,但是,复杂和过于分层的JSON结构呢?据我所知,字典是
字典<string,string>
其关键是树的父母连接":"同时管理重复的节点,枚举它们等.痛苦从头开始构建这个算法.
我有一个 Azure 函数,我正在使用 DI 系统来注册一些类型;例如:
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
builder.Services
.AddTransient<IMyInterface, MyClass>()
. . . etc
Run Code Online (Sandbox Code Playgroud)
但是,我还要从我的环境设置中注册一些数据。在函数本身内部,我可以获得ExecutionContext, 所以我可以这样做:
IConfiguration config = new ConfigurationBuilder()
.SetBasePath(context.FunctionAppDirectory)
.AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
Run Code Online (Sandbox Code Playgroud)
但是,在 FunctionsStartup 中,我无权访问ExecutionContext. 有没有一种方法可以从 FunctionsStartup 类中获取 ExecutionContext ,或者另一种确定当前运行目录的方法,以便我可以设置基本路径?