.net core中 读取appsetting.json中配置值

背景说明:

      在.net core中appsetting文件中配置了很多基础项:比如session过期时间、短信配置参数等,以便在部署时快速更换基础参数值

appsetting.json文件示例

{
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "ConnectionStrings": {
    "Database": "Server=127.0.0.1;Database=db_dep;user=sa;password=#;"
  },
  "Setting": {
    "session_timeout": "1800"
  },
  "AllowedHosts": "*"
}
View Code

新建一个和配置项同名的类:Setting

public class Setting
    {
        /// <summary>
        /// session过期时间(秒)
        /// </summary>
        public string session_timeout { get; set; }
    }
View Code

在Stratup类的ConfigureServices方法中添加依赖注入

services.Configure<Setting>(Configuration.GetSection("Setting"));

这样就可以了,在Controller使用时可以定义:

private readonly IOptions<Setting> _setting;
public LoginController(IOptions<Setting> setting)
{
_setting = setting;
}
View Code

如果是在视图中使用@inject 关键字

@inject IOptions<AppSettings> AppSettings

<title>@AppSettings.Options.SiteTitle</title>
View Code

那如果是需要在startup类中启用session时,直接给session添加过期时间,需要读配置项,该如何获取呢(详见红色字体)?

//增加session过期时间配置项加载
services.AddSession(o =>
{
o.IdleTimeout = TimeSpan.FromSeconds(double.Parse(Configuration.GetSection("Setting").GetValue<string>("session_timeout").ToString()));
});

参考说明:https://www.cnblogs.com/TomXu/p/4496440.html

当然如果要在类中创建数据自己的json配置类,也是可以的,详情参考:

 https://www.cnblogs.com/CreateMyself/p/6859076.html

猜你喜欢

转载自www.cnblogs.com/yhnet/p/11949195.html
今日推荐