在項目開始之前我們可以先去瞭解一下IConfiguration介面,.Net Core Web應用程式類似於一個控制台,當程式運行到Startup時會自動註入IConfiguration,預設讀取當前.Net Core Web應用程式中的appsettings.json文件。讀取當前.Net Cor ...
在項目開始之前我們可以先去瞭解一下IConfiguration介面,.Net Core Web應用程式類似於一個控制台,當程式運行到Startup時會自動註入IConfiguration,預設讀取當前.Net Core Web應用程式中的appsettings.json文件。讀取當前.Net Core Web應用程式的配置文件可以自動直接註入,但如果我們需要使另一個類庫項目讀取到指定.Net Core Web應用程式中的配置文件,需要怎麼做?憑藉Asp.Net Core無處不在的“依賴註入”,我們可以在Startup執行時將讀取的配置信息註入到類庫項目中,之後我們可以愉快的使用配置信息了
新建一個.Net Core的類庫項目和.Net Core Web應用程式,修改Web應用程式中的appsettings.json文件加入資料庫連接字元串用於之後的試驗。
{ "WebConfig": { "OracleConnectionString": "User Id=fjh;Password=fjh_123;Data Source=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)))(CONNECT_DATA = (SERVICE_NAME = orcl)));Pooling = True;Max Pool Size = 800;Min Pool Size = 1;Connect Timeout=5;" }, "Logging": { "LogLevel": { "Default": "Warning" } }, "AllowedHosts": "*" }
.Net Core的類庫項目中新建一個靜態類:ConfigurationHelper.cs
使用IConfiguration介面需要添加依賴項:Microsoft.Extensions.Configuration
using Microsoft.Extensions.Configuration; namespace Read_Configuration_File { public class ConfigurationHelper { private static IConfiguration _config; public static void Configure(IConfiguration config) { _config = config; } /// <summary> /// 根據配置文件鍵讀取對應的值 /// </summary> /// <param name="Key"></param> /// <returns></returns> public static string GetConfigValueByKey(string Key) { var value = _config[Key]; return value; } } }
創建一個靜態欄位_config用來存儲配置信息,同時定義一個靜態方式通過配置文件的鍵值獲取對應的值。
.Net Core的類庫項目中新建一個靜態類:Utilconfig.cs
創建一個只讀靜態欄位OracleConnectionString存儲根據鍵值獲得的配置文件的值
namespace Read_Configuration_File { public static class UtilConfig { public static string OracleConnectionString => ConfigurationHelper.GetConfigValueByKey("WebConfig:OracleConnectionString") == null ? "" : string.Format(ConfigurationHelper.GetConfigValueByKey("WebConfig:OracleConnectionString")); } }
最關鍵的一步,修改.Net Core Web應用程式中的Startup.cs
我們需要將配置信息註入到類庫項目,需要使用ConfiurationHelper類下的靜態方法。在創建的.Net Core Web應用程式的Startup文件中調用Configure方法,使用前不要忘了先引用類庫項目
到這裡為止,我們可以調用靜態類UtilConfig中的靜態只讀欄位OracleConnectionString愉快的使用.Net Core Web應用程式的配置信息。
接下來我們來驗證一下項目是否成功
在.Net Core庫類項目中新建一個類:ConnectionRead
創建一個靜態方法GetConnectionStr()返回獲取到的配置文件信息
namespace Read_Configuration_File { public class ConnectionRead { /// <summary> /// 定義一個靜態方法獲取連接字元串 /// </summary> /// <returns></returns> public static string GetConnectionStr() { var connStr = UtilConfig.OracleConnectionString; return connStr; } } }
項目結構
在.Net Core Web項目中的HomeController主頁中調用這個靜態方法,如果能正確讀取到配置文件的值,那項目就成功了
修改一下主頁
執行文件我們可以發現主頁上顯示了我們想要讀取的資料庫連接的配置信息。Nice!成功