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; }