首页 / 问答 / .NET Core/ASP.NET Core应用程序编程开发中如何在运行时使用代码动态修改appsettings.json配置文件中的参数值?

.NET Core/ASP.NET Core应用程序编程开发中如何在运行时使用代码动态修改appsettings.json配置文件中的参数值?

0

在.NET Core/ASP.NET Core的应用程序编程开发中,通常会把一些关于应用程序的配置参数放到appsettings.json这个配置文件中,应用程序启动的时会读取指定的配置文件中的各种参数。那是否有可能在程序运行时通过代码去修改这些配置参数呢,如果可以又应该如何实现呢?
比如这里有个配置文件:

{
  "Locations": {
    "Name": "Hello"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*"
}

现在想要在程序行动时动态从控制器或者其他地方修改Locations节点的子节点Name的值,应该如何实现?

回复 [×]
提交评论
请输入评论内容

1 个回答

  • 0

    1.创建一个配置项目的实体类(Locations.cs)

    2.再定义一个继承至Microsoft.Extensions.Options.IOption接口的的可写选项泛型接口IWritableOptions.cs,如下:

    3.接着实现接口IWritableOptions.cs的类WritableOptions.cs:

    注意: ASP.NET Core 3.0及以上,请自行安装NewtonsoftJson序列化组件,包管理工具命令如:Install-Package Microsoft.AspNetCore.Mvc.NewtonsoftJson -Version 3.1.3

    4.再实现一个ServiceCollectionExtensions的静态扩展类和方法,以便在Startup.cs中注册服务,如下:

    5.在Startup.cs文件中注册服务,如下:

    6.最后创建一个控制器,在此控制器中写方法来动态修改配置文件中Locations节点的配置参数,如下:

    打开地址:http://localhost:5772/api/options/change/123 ,如果浏览器返回OK,则表示修改成功,再打开appsettings.json文件查看Locations节点的参数值是否被成功修改了呢?

    注: localhost:5772 这个地址是我的测试项目地址,请根据你的实际项目地址进行替换。

    为了展示.NET Core应用程序自动刷新appsettings.json的参数,我们需要进一步的设置。在Program.cs文件中配置appsettings.json配置文件reloadOnChange=true,如下:

    再打开地址:http://localhost:5772/api/options/read 查看配置参数是否自动刷新成修改后的最新的数据。

    Rector的个人主页

    Rector

    2020-04-21 回答

    我来回答