c#讀取appsetting.json配置文件

asp.net core 取消了web.config配置文件,而將appsetting.json作爲了配置文件。

那麼,怎麼讀取相關數據呢?這裏我在appsetting.json中添加一些信息

第一種:在.net core 類庫中讀取json文件

{
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "Appsettings": {
    "ConnectionString": "Persist Security Info=True;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.17.202)(PORT=1032)))(CONNECT_DATA=(SERVICE_NAME = orcl)));User Id=ircs;Password=123456",
    "Port": 5000,
    "ReportDir": "C:\\Team2020\\ICRS\\ReportDir", //上報文件存放目錄(未加密)
    "entityFilePath": "D:\\test", //監測日誌實體文件存放目錄
    "ircsId": "AB123", //經營者ID
    "level": "000001000000" //違法違網站處置規指令等級              
  },
  "AllowedHosts": "*"
}

 

這裏我們需要添加netGet包:

注意:與讀取Web.Config不同的是,asp.net 添加引用 using System.Configuration;

asp.net core 需要添加三個程序包,分別爲:

Microsoft.Extensions.Configuration;
Microsoft.Extensions.Configuration.Abstractions;
Microsoft.Extensions.Configuration.Json;

 

 

 

 

加載配置文件的服務類:

    public class AppConfigurtaionServices
    {
        public static IConfiguration Configuration { get; set; }
        static AppConfigurtaionServices()
        {
            //ReloadOnChange = true 當appsettings.json被修改時重新加載            
            Configuration = new ConfigurationBuilder()
            //.SetBasePath(Directory.GetCurrentDirectory())
            //AppDomain.CurrentDomain.BaseDirectory是程序集基目錄,所以appsettings.json,需要複製一份放在程序集目錄下,
            .SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
            .Add(new JsonConfigurationSource { Path = "appsettings.json", ReloadOnChange = true })
            .Build();
        }

       
    }

 

 

 

獲取數據:

var conStr = AppConfigurtaionServices.Configuration.GetSection("Appsettings:ConnectionString").Value;
var conStr2 = AppConfigurtaionServices.Configuration.GetSection("Appsettings").GetSection("ConnectionString").Value;

 

獲取oracle數據庫連接信息(兩種寫法都行):

 

 

第二種,控制器中獲取json,(採用依賴注入的方式,注入獲取配置文件的服務)

首先新建一個類,名稱隨意如:AppSettingModel

    /// <summary>
    /// 配置文件實體類
    /// </summary>
    public class AppSettingModel
    {
        public string ConnectionString { get; set; }
        public string Port { get; set; }
        public string ReportDir { get; set; }
        public string EntityFilePath { get; set; }
        public string IrcsId { get; set; }
        public string Level { get; set; }
    }

注意字段名要與配置文件的name一致。

 

 

 

在StartUp類的ConfigureServices 中加上:

//則是自動初始化AppSettings實例並且映射appSettings裏的配置
services.Configure<AppSettingModel>(Configuration.GetSection("Appsettings"));

如果;IServiceCollection找不到,需要在NewGet添加   Microsoft.Extensions.DependencyInjection;

 

 

 

控制器獲取相關數據:

public class AppSettingInfoController : Controller
    {
        public readonly AppSettingModel _appSettingModel;
//IOptions找不到,需要NuGet添加包 Microsoft.Extensions.Options;
public AppSettingInfoController(IOptions<AppSettingModel> appSettingModel) { _appSettingModel = appSettingModel.Value; } public ActionResult Index() { ViewData["conStr"] = _appSettingModel.ConnectionString; return null; }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章