ASP.Net Core 5.0 MVC AppSettings配置檔案讀取,Startup 類中ConfigureServices 方法、Configure 方法的使用

明志德道發表於2021-02-05

配置檔案讀取

1. 新建FirstController控制器

  在appsettings檔案內容替換成以下程式碼

{
  "Position": {
    "Title": "EditTool For human",
    "Name": "Joe Smith"
  },//json物件
  "MyKey": "My appsettings.json Value",
  "StudentList": [
    {"sName": "Jack"},
    {"sName":"John"}
  ],//json陣列
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }//json物件巢狀
  },
  "AllowedHosts": "*"
}

配置檔案讀取

在Fristcontroller新增Index方法,複製以下內容

        public IConfiguration Configuration { get; }
        //建構函式注入 configuration
        public FirstController(IConfiguration configuration)
        {
            Configuration = configuration;
           

        }
        
        public IActionResult Index()
        {
            //配置檔案的讀取
            ViewBag.Title = Configuration["Position:Title"];//json物件
            ViewBag.MyKey = Configuration["MyKey"];
            ViewBag.sName1 = Configuration["StudentList:0:sName"];//json陣列
            ViewBag.sName2 = Configuration["StudentList:1:sName"];
            ViewBag.Default = Configuration["Logging:LogLevel:Default"];//json巢狀物件
            return View();
        }

新增index檢視,複製以下內容

@*
    For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
*@
@{
}
<p>  ViewBag.Title 的值:    @ViewBag.Title</p>
<p>  ViewBag.MyKey的值:    @ViewBag.MyKey</p>
<p>  ViewBag.sName1的值:     @ViewBag.sName1</p>
<p>  ViewBag.sName2的值:   @ViewBag.sName2</p>
<p>  ViewBag.Default的值:    @ViewBag.Default</p>

執行測試效果

 

Startup 類

ASP.NET Core 應用使用 Startup 類,按照約定命名為 Startup。 Startup 類:

在應用啟動時,ASP.NET Core 執行時會呼叫 ConfigureServices 和 Configure

ConfigureServices 方法

ConfigureServices 方法:

  • 可選。
  • 在 Configure 方法配置應用服務之前,由主機呼叫。
  • 其中按常規設定配置選項

主機可能會在呼叫 Startup 方法之前配置某些服務。 有關詳細資訊,請參閱主機

對於需要大量設定的功能,IServiceCollection 上有 Add{Service} 擴充套件方法。 例如,AddDbContext、AddDefaultIdentity、AddEntityFrameworkStores 和 AddRazorPages :

    public void ConfigureServices(IServiceCollection services)
    {

        services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection")));
        services.AddDefaultIdentity<IdentityUser>(
            options => options.SignIn.RequireConfirmedAccount = true)
            .AddEntityFrameworkStores<ApplicationDbContext>();

        services.AddRazorPages();
    }

將服務新增到服務容器,使其在應用和 Configure 方法中可用。 服務通過依賴關係注入或 ApplicationServices 進行解析。

Configure 方法

Configure 方法用於指定應用響應 HTTP 請求的方式。 可通過將中介軟體元件新增到 IApplicationBuilder 例項來配置請求管道。 Configure 方法可使用 IApplicationBuilder,但未在服務容器中註冊。 託管建立 IApplicationBuilder 並將其直接傳遞到 Configure

ASP.NET Core 模板配置的管道支援:

   public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();

        app.UseRouting();

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapRazorPages();
        });
    }

每個 Use 擴充套件方法將一個或多箇中介軟體元件新增到請求管道。 例如,UseStaticFiles 配置中介軟體提供靜態檔案

請求管道中的每個中介軟體元件負責呼叫管道中的下一個元件,或在適當情況下使鏈發生短路。

可以在 Configure 方法簽名中指定其他服務,如 IWebHostEnvironmentILoggerFactory 或 ConfigureServices 中定義的任何內容。 如果這些服務可用,則會被注入。

相關文章