appsetting.json內容
//省略部分程式碼... //程式碼生成相關 "CodeCreatorInfo": { "xmlPath": "11111", //xml路徑(絕對路徑) "jsRootPaht": "2222", //js資料夾路徑 "Controllers": "333", //特殊Controller列表,逗號隔開 "NameSpace": "4444" //有效名稱空間:"App.Web."之後的內容,主要用於多專案的專案,以逗號分隔,例如:APIControllers1,APIControllers2 } //省略部分程式碼...
方法一:控制器中獲取json,採用依賴注入的方式
1、引用庫
using Microsoft.Extensions.Configuration;
2、使用介面服務:IConfiguration
注:觀察這個類,這已經被 CodeCreatorController 自動注入了,無需手動做注入操作
using Microsoft.Extensions.Configuration; namespace App.Web.APIControllers { /// <summary> /// js程式碼生成介面 /// </summary> [Route("api/[controller]/[action]")] [ApiController] public class CodeCreatorController : BaseAPIController1 { /// <summary> /// 自動注入 /// </summary> /// <param name="configuration"></param> public CodeCreatorController(IConfiguration configuration) { _configuration = configuration; } public IConfiguration _configuration { get; } /// <summary> /// 獲取XML文件內容,生成js檔案內容,生成兩種,分別用於頁面和小程式 /// </summary> [HttpGet] public JsonResult CreateJsByXML() { //獲取appsettiong配置內容 var CodeCreatorInfo = _configuration.GetSection("CodeCreatorInfo"); string xmlPath = _configuration.GetSection("CodeCreatorInfo")["xmlPath"]; /* 省略部分程式碼 */ } } }
注意:如果專案中需要用到反射,此時對應當前 Controller 的反射時會出錯。可以使用方法二
方法二:在.net core 類庫中讀取json檔案
1、新增引用:
using System.Configuration; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.Json;
2、載入配置檔案的服務類:
/// <summary> /// 獲取appsetting的服務類 /// </summary> 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(); } }
3、獲取資料:
/*省略部分程式碼*/ //類庫中讀取:兩種取值方式【OK】 var xmlPath = AppConfigurtaionServices.Configuration.GetSection("CodeCreatorInfo:xmlPath").Value; var jsRootPaht = AppConfigurtaionServices.Configuration.GetSection("CodeCreatorInfo").GetSection("jsRootPaht").Value; var Controllers = AppConfigurtaionServices.Configuration.GetSection("CodeCreatorInfo").GetSection("Controllers").Value; var NameSpace = AppConfigurtaionServices.Configuration.GetSection("CodeCreatorInfo").GetSection("NameSpace").Value; var ControllersArray = Controllers.Split(','); var NameSpaceArray = NameSpace.Split(','); /*省略部分程式碼*/
原文:https://www.cnblogs.com/dyhao/p/13065774.html