標籤:image asp setting 項目 soft 技術分享 data configure bsp
ASP.NET Core 是如何讀取設定檔,今天我們來學習。
ASP.NET Core的配置系統已經和之前版本的ASP.NET有所不同了,之前是依賴於System.Configuration和XML設定檔web.config。
新的配置系統支援多種格式的設定檔。
下面我們來以json 格式的設定檔正式開始學習。
我們建立一個ASP.NET Core Web 應用程式,選擇無身分識別驗證。
讀取設定檔
在項目目錄下有個 appsettings.json ,我們先來操作這個檔案。
在appsettings.json 添加如下兩個節點。
{ "Data": "LineZero", "ConnectionStrings": { "DefaultConnection": "資料庫1", "DevConnection": "資料庫2" }, "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Debug", "System": "Information", "Microsoft": "Information" } }}
下面我們來讀取。由於項目預設已經將該檔案加入ConfigurationBuilder 之中,所以我們可以直接來讀取。
在 Configure 方法中讀取:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { var data = Configuration["Data"]; //兩種方式讀取 var defaultcon = Configuration.GetConnectionString("DefaultConnection"); var devcon = Configuration["ConnectionStrings:DevConnection"];
偵錯工具,可以看到資料成功取出。
多環境區分
我們複製一個appsettings.json 然後重新命名為 appsettings.Development.json
更改appsettings.Development.json 如下:
{ "Data": "LineZero Development", "ConnectionStrings": { "DefaultConnection": "開發資料庫1", "DevConnection": "開發資料庫2" }, "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Debug", "System": "Information", "Microsoft": "Information" } }}
然後我們偵錯工具,你會發現擷取到的值變成了Development.json 裡的值。
這裡就是多環境配置。
public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)//增加環境設定檔,建立項目預設有 .AddEnvironmentVariables(); Configuration = builder.Build(); }
如果我們直接執行讀取到的就是appsettings.json 的值,因為直接執行時是 Production 環境。
下面是輸出圖:
調試時:
dotnet run 時:
對象讀取
我們在appsettings.json 及 Development.json 都添加一個 SiteConfig 節點。
"SiteConfig": { "Name": "LineZero‘s Blog", "Info": "ASP.NET Core 開發及跨平台,設定檔讀取" },
然後建立一個SiteConfig 類。
public class SiteConfig { public string Name { get; set; } public string Info { get; set; } }
首先在 ConfigureServices 中添加Options 及對應配置。
public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddMvc(); //添加options services.AddOptions(); services.Configure<SiteConfig>(Configuration.GetSection("SiteConfig")); }
然後我們在 Controller 中讀取。
public class HomeController : Controller { public SiteConfig Config; public HomeController(IOptions<SiteConfig> option) { Config = option.Value; } public IActionResult Index() { return View(Config); } }
對應View Index.cshtml
@model SiteConfig@{ ViewData["Title"] = Model.Name;}<h1>@Model.Name</h1><h2>@Model.Info</h2>
執行程式 http://localhost:5000/
如果你覺得本文對你有協助,請點擊“推薦”,謝謝。
ASP.NET Core開發-讀取設定檔Configuration