背景說明:
在.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配置類,也是可以的,詳情參考:
https://www.cnblogs.com/CreateMyself/p/6859076.html