背景说明:
在.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": "*" }
新建一个和配置项同名的类:Setting
public class Setting { /// <summary> /// session过期时间(秒) /// </summary> public string session_timeout { get; set; } }
在Stratup类的ConfigureServices方法中添加依赖注入
services.Configure<Setting>(Configuration.GetSection("Setting"));
这样就可以了,在Controller使用时可以定义:
private readonly IOptions<Setting> _setting; public LoginController(IOptions<Setting> setting) { _setting = setting; }
如果是在视图中使用@inject 关键字
@inject IOptions<AppSettings> AppSettings
<title>@AppSettings.Options.SiteTitle</title>
那如果是需要在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配置类,也是可以的,详情参考: