IOptions 读取配置文件


通过IOptions来读取配置文件
绑定到实体类
我们假设 appsettings.json 内容如下:
{ "Name": "abc1234567890", "ConnectionStrings": "23" }
新建一个 Settings 实体类
public class Settings { public string Name { get; set; } public string ConnectionStrings { get; set; } }
在 Startup.cs 文件的 ConfigureServices 方法中将配置绑定到实体类。
//将配置文件绑定到一个 TOptions 实例 services.Configure<Settings>(Configuration);
获取配置
方式一:在控制器的构造函数中,我们可以通过DI来获取
public DefaultController(IOptions<Settings> options) { this._settings = options.Value; }
方式二:在页面中直接使用@inject
@using Microsoft.Extensions.Options @inject IOptions<WebApplication2.Settings> settings <h2>@settings.Value.Name</h2>
配置热更新
将 IOptions 修改为 IOptionsSnapshot 类即可实现热更新
.net core web 默认使用热更新
是由于 Program.cs 中 WebHost.CreateDefaultBuilder(args) 设置的。
在 https://github.com/aspnet/MetaPackages/blob/dev/src/Microsoft.AspNetCore/WebHost.cs 中可以看到 CreateDefaultBuilder 的源码。
config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
他设置了 reloadOnChange=true
当然,我们也可以重新设定
WebHost.CreateDefaultBuilder(args) .ConfigureAppConfiguration(config => { config.AddJsonFile("appsettings.json", true, false); }) .UseStartup<Startup>() .Build();
版权说明
作者:SQBER
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
{0}
{5}
{1}
{2}回复
{4}
*昵称:
*邮箱:
个人站点:
*想说的话: