[05]ASP.NET Core 中的 Main 方法

ASP.NET Core 中的 Main 方法

本文做者:梁桐銘- 微軟最有價值專家(Microsoft MVP) 
文章會隨着版本進行更新,關注我獲取最新版本 
本文出自《從零開始學 ASP.NET Core 與 EntityFramework Core》目錄 
視頻課程效果更佳:跨平臺開發實戰掌握 ASP.NET Core 與 EntityFramework Core 服務器

ASP.NET Core 中的 Main 方法

視頻推薦觀看地址

在 ASP.NET Core 項目中,咱們有一個名爲Program.cs的文件。在這個文件中,咱們有一個public static void Main()方法 。mvc

public class Program { public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>(); } 
C#

若是您對傳統的.NET Framework 有任何使用經驗,則知道控制檯應用程序具備 Main()方法,它是該控制檯程序的入口。app

但今天,咱們正在建立一個 ASP.NET Core Web 應用程序而不是控制檯應用程序。所以,咱們想到的一個顯而易見的問題是。 爲何咱們也會有一個Main()方法?asp.net

因此這個知識點,要記住的。ASP.NET Core 應用程序最初做爲控制檯應用程序啓動,而Program.cs文件中的Main()方法就是入口。async

所以,當運行時執行咱們的應用程序時,它會查找此Main()方法以及執行配置開始的地方。ui

這個Main()方法配置 asp.net Core 並啓動它,此時,它成爲一個 asp.net Core Web 應用程序。所以,若是你跟蹤一下Main()方法,它會調用 CreateWebHostBuilder()方法傳遞命令行參數。spa

而後你就能夠看到,CreateWebHostBuilder()方法返回一個實現 IWebHostBuilder 的對象。 在此對象上,調用Build()方法,會將咱們的 ASP.NET Core 應用程序生成而且託管到服務器上。 在服務器上的程序調用Run() 方法,該方法運行後Web 應用程序並開始偵聽傳入的 HTTP 請求。 CreateWebHostBuilder()方法調用靜態類WebHost中的靜態方法CreateDefaultBuilder()。 CreateDefaultBuilder()方法會在服務器上建立一個已經預設置好的默認值。 CreateDefaultBuilder()方法執行多項操做來建立服務器..net

咱們在後面的視頻中詳細討論CreateDefaultBuilder()中的全部方法。命令行

而如今你只須要了解CreateDefaultBuilder()方法是用於在服務器上建立程序配置的默認值而存在。 它做爲設置服務器的一部分,還使用了IWebHostBuilder接口中的UseStartup()的擴展方法來配置Startup類。 若是您不熟悉擴展方法的概念, 那麼你該去補課了。code

按照微軟的規則,ASP.NET Core 中的啓動類名爲Startup。 這個類有 2 種方法。

public class Startup { 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("Hello World!"); }); } } 
C#

Startup 類雖然只有兩個方法,可是這兩個方法作了很是重要的事情:

  • ConfigureServices()方法配置應用程序所需的服務
  • Configure()方法配置應用程序的請求處理管道

咱們理解這兩種方法的做用是很是重要。

在後面的課程中,咱們會大量使用這兩種方法。到時候須要你們屢次加深印象。

文章說明

若是您以爲個人文章質量還不錯,歡迎打賞,也能夠訂閱個人視頻哦 
未獲得受權不得擅自轉載本文內容,52abp.com 保留版權 

感謝您對個人支持

相關文章
相關標籤/搜索