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

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>();
}
/<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

歡迎添加個人微信號:Like若所思。

歡迎關注我的公眾號,不僅為你推薦最新的博文,還有更多驚喜和資源在等著你!一起學習共同進步!

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


分享到:


相關文章: