歡迎光臨
每天分享高質量文章

ASP.NET Core appsettings.json檔案(9)《從零開始學ASP.NET CORE MVC》:

 

本文出自《從零開始學ASP.NET CORE MVC》
推薦文章:ASP.NET Core launchsettings.json檔案

ASP.NET Core appsettings.json檔案

在本影片中,我們將討論ASP.NET Core 專案中appsettings.json檔案的重要性。

在以前的ASP.NET版本中,我們將應用程式配置設定(例如資料庫連線字串)儲存在web.config檔案中。
在 Asp.Net Core 中, 應用程式配置設定可以來自以下不同的配置源。

  • 檔案(appsettings.json, appsettings.{Environment}.json) Environment環境不同,託管在對應環境。
  • User secrets (使用者機密)
  • Environment variables (環境變數)
  • Command-line arguments (命令列引數)

appsettings.json f檔案: 我們的專案是透過Asp.net Core 預製的”空”模板建立的,所以我們的專案中已經有一個appsettings.json 的檔案了。
我們可以對檔案進行如下修改,補充一個MyKey的鍵值對:

{
  "Logging": {
    "LogLevel": {
      "Default""Warning"
    }
  },
  "AllowedHosts""*",
  "MyKey"" appsettings.json中Mykey的值",
}

訪問配置資訊

若要訪問 “Startup “ 類中的配置資訊, 請註入框架提供的 IConfiguration服務。Startup類位於 startup. cs 檔案中。

public class Startup
{
    private IConfiguration _configuration;

    // 註意,我們在這裡使用了依賴註入
    public Startup(IConfiguration configuration)
    {
        _configuration = configuration;
    }

    public void ConfigureServices(IServiceCollection services)
    {
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.Run(async (context) =>
        {
            await context.Response.WriteAsync(_configuration["MyKey"]);
        });
    }
}

依賴註入

在以前版本的ASP.NET中,依賴註入是可選的,要配置它,我們必須使用像Ninject,autofac、castle windsor等第三方框架。

在 asp. net Core 中, 依賴註入是不可或缺的一部分。依賴註入能使我們能夠建立低耦合、可擴充套件且易於測試的系統。

我們將在即將推出的影片中詳細討論依賴註入,盡情期待。

ASP.NET Core IConfiguration 服務

  • IConfiguration 服務是為了從asp.net Core 中的所有各種配置源讀取配置資訊而設計的。
  • 如果在多個配置源中具有相同金鑰名稱的配置設定,簡單來說就是重名了,則後面的配置源將改寫先前的配置源 。

幾個地方的演示,分別是如何替換的。
launchsetting

  • 靜態類WebHostCreateDefaultBuilder()方法在應用程式啟動時會自動去呼叫,按特定順序讀取配置源。
  • 要檢視配置源的讀取順序,請檢視以下連結上的ConfigureAppConfiguration()方法
    https://github.com/aspnet/MetaPackages/blob/release/2.2/src/Microsoft.AspNetCore/WebHost.cs

檢查檔案後,您將看到,以下是讀取各種配置源的預設順序

  1. appsettings.json,
  2. appsettings.{Environment}.json
  3. 使用者機密
  4. 環境變數
    5.命令列引數

如果您想要改變他們的呼叫順序,甚至往裡面新增屬於自己的自定義配置資訊,我們將在後面的課程中討論如何自定義配置源。

小結

所以翻原始碼也沒有那麼可怕嘛

/// <summary>
        /// Initializes a new instance of the <see cref="WebHostBuilder"/> class with pre-configured defaults using typed Startup.
        /// summary>

/// <remarks>
/// The following defaults are applied to the returned <see cref=“WebHostBuilder”/>:
/// use Kestrel as the web server and configure it using the application’s configuration providers,
/// set the <see cref=“IHostingEnvironment.ContentRootPath”/> to the result of <see cref=“Directory.GetCurrentDirectory()”/>,
/// load <see cref=“IConfiguration”/> from ‘appsettings.json’ and ‘appsettings.[<see cref=“IHostingEnvironment.EnvironmentName”/>].json’,
/// load <see cref=“IConfiguration”/> from User Secrets when <see cref=“IHostingEnvironment.EnvironmentName”/> is ‘Development’ using the entry assembly,
/// load <see cref=“IConfiguration”/> from environment variables,
/// load <see cref=“IConfiguration”/> from supplied command line args,
/// configure the <see cref=“ILoggerFactory”/> to log to the console and debug output,
/// enable IIS integration.
/// remarks>
/// <typeparam name =“TStartup”>The type containing the startup methods for the application.typeparam>
/// <param name=“args”>The command line args.param>
/// <returns>The initialized <see cref=“IWebHostBuilder”/>.returns>
public static IWebHostBuilder CreateDefaultBuilder<TStartup>(string[] args) where TStartup : class =>
CreateDefaultBuilder(args).UseStartup<TStartup>();

    已同步到看一看
    贊(0)

    分享創造快樂