asp.net-core - 如何更新(在内存中)IConfigurationSection 的值

标签 asp.net-core

鉴于 Config 是一个 IConfiguration 并且 services 是一个 ServiceCollection,代码如下:

        var section = Config.GetSection("MyDatabaseOptions");
        var configdb = secao.Get<MyDbConfiguration>();
        configdb.ConnectionString = DoSomethingWithSectionObject(configdb);

我想使用 configdb.ConnectionString 的新内容更新 section,以便能够使用以下方式在 ServiceCollection 上配置它:

services.Configure<MyDbConfiguration>(section);

我怎样才能做到呢?或者还有其他方法?

最佳答案

IConfiguration 只是一个字符串层次结构,其底层有一个路径,因此您可以使用具有正确键的索引器来修改值:

var section = Config.GetSection("MyDatabaseOptions");
var configdb = section.Get<MyDbConfiguration>();
section[nameof(MyDbConfiguration.ConnectionString)] = DoSomethingWithSectionObject(configdb);

但它只适用于字符串,如果你想修改整个结构,会稍微复杂一点,但想法仍然是一样的 - 你需要指定属性和字符串值的路径,例如:

Configuration[$"{section.Path}:{nameof(MyDbConfiguration.ConnectionString)}"] = "new value";

关于asp.net-core - 如何更新(在内存中)IConfigurationSection 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51751791/

相关文章:

angular - ASP.NET Core UTC 时间转本地时间

asp.net-core - Dotnet Core - 在启动时配置延迟加载

asp.net-core - 将 Office Addins 项目的目标框架从 .NET Framework 更改为 .NET Core

reactjs - 在 ASP.NET Core API 中处理 id_token

c# - 无法将 Serilog 配置代码行转换为 json 配置

asp.net-core - 在反向代理后面运行时,使用端口 80 进行 https 的 Swashbuckle

c# - 尝试使用 Entity Framework 更新时,数据库中已经有一个名为 'AspNetRoles' 的对象

c# - 为什么将属性初始化为 null 而不是配置中的空列表?

asp.net-core - 如何使用dotnet核心CLI创建解决方案文件

c# - 带有 Angular 6 捆绑文件的项目模板的 ASP.NET Core 404(错误的 dist 输出目录)