asp.net core 系列 2 啟動Startup類介紹


一.Startup類

  ASP.NET Core 應用是一個控制台應用,它在其 Program.Main 方法中創建 Web 服務器。其中Main方法是應用的托管入口點,Main 方法調用 WebHost.CreateDefaultBuilder來創建 Web 主機,自動分配了 Kestrel Web 服務器。IWebHostBuilder 的 Build 方法生成 IWebHost對象調用Run 方法啟動WebHost,此時托管應用並開始偵聽 HTTP 請求。代碼如下所示:

public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>();
}

 

  1.1 應用啟動 Startup類

    IWebHostBuilder類的UseStartup調用啟動類,按照約定命名為 Startup,該類必須是公共類,用於定義請求處理管道配置應用所需的任何服務。當應用啟動時會調用 ConfigureServices 和 Configure兩個方法。ConfigureServices 用於注入服務, Configure用於響應HTTP請求。

public class Startup
{
    // Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        ...
    }

    // Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app)
    {
        ...
    }
}

  

  1.2  ConfigureServices方法

    ConfigureServices 方法負責注入服務。該方法在WebHost的Configure方法之前被調用,將服務添加到服務容器使得它們可以通過依賴注入在應用程序中使用,在webHost啟動之前會加載該方法中的服務。典型模式是調用Add{service}方法注入服務,然后調用所有 services.Configure{Service} 方法。注入服務后,使其在應用和 Configure 方法中使用服務。在參數IServiceCollection (服務容器)上有 Add[Service] 擴展方法,用於添加自帶的framework框架服務(例如添加EF,identity,mvc服務)也可以在IServiceCollection上注入自定義服務。

  public void ConfigureServices(IServiceCollection services)
        {
            //注入 Razor Pages 和 MVC 需要的服務
            services.AddMvc();
        }

 

  1.3 Configure方法

    Configure方法用於指定應用響應 HTTP 請求的方式。可將中間件注冊到IApplicationBuilder 實例來配置請求管道。下面示例注冊的中間件包括: ExceptionHandler異常/錯誤處理、HttpsRedirection重定向、StaticFiles靜態文件服務器、CookiePolicy策略實施、mvc等中間件。每一個use開頭的擴展方法將一個中間件添加到IApplicationBuilder請求管道中。

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

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

            app.UseMvc();
        }

 

  總結: (1) Program的main方法用於創建WebHost服務,調用啟動類Startup。

      (2) Startup中的ConfigureServices方法用於將服務注入到 IServiceCollection 服務容器中。

      (3) Startup中的Configure方法用於應用響應 HTTP 請求,將中間件注冊到 ApplicationBuilder中來配置請求管道。

 參考文獻:

    https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/startup?view=aspnetcore-2.1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM