本文出自《從零開始學ASP.NET CORE MVC》
推薦文章:ASP.NET Core Web 專案檔案
ASP.NET Core 中的 Main方法
一個開始專心寫字的人
在ASP.NET Core專案中,我們有一個名為Program.cs
的檔案。在這個檔案中,我們有一個public static void Main()
方法 。
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup();
}
如果您對傳統的.NET Framework有任何使用經驗,則知道控制檯應用程式具有Main()方法,它是該控制檯程式的入口。
但今天,我們正在建立一個ASP.NET Core Web應用程式而不是控制檯應用程式。因此,我們想到的一個顯而易見的問題是。
為什麼我們也會有一個Main()
方法?
所以這個知識點,要記住的。ASP.NET Core 應用程式最初作為控制檯應用程式啟動,而Program.cs
檔案中的Main()
方法就是入口。
因此,當執行時執行我們的應用程式時,它會查詢此Main()
方法以及執行配置開始的地方。
這個Main()
方法配置asp.net Core 並啟動它,此時,它成為一個asp.net Core Web應用程式。因此,如果你跟蹤一下Main()
方法,它會呼叫CreateWebHostBuilder()方法傳遞命令列引數。
然後你就可以看到,CreateWebHostBuilder()方法傳回一個實現IWebHostBuilder的物件。
在此物件上,呼叫Build()
方法,會將我們的ASP.NET Core 應用程式生成並且託管到伺服器上。
在伺服器上的程式呼叫Run()
方法,該方法執行後Web應用程式並開始偵聽傳入的HTTP請求。CreateWebHostBuilder()
方法呼叫靜態類WebHost
中的靜態方法CreateDefaultBuilder()
。CreateDefaultBuilder()
方法會在伺服器上建立一個已經預設定好的預設值。CreateDefaultBuilder()
方法執行多項操作來建立伺服器.
我們在後面的影片中詳細討論
CreateDefaultBuilder()
中的所有方法。
而現在你只需要瞭解CreateDefaultBuilder()
方法是用於在伺服器上建立程式配置的預設值而存在。
它作為設定伺服器的一部分,還使用了IWebHostBuilder
介面中的UseStartup()
的擴充套件方法來配置Startup
類。
如果您不熟悉擴充套件方法的概念, 那麼你該去補課了。
按照微軟的規則,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!");
});
}
}
Startup類雖然只有兩個方法,但是這兩個方法做了非常重要的事情:
ConfigureServices()
方法配置應用程式所需的服務Configure()
方法配置應用程式的請求處理管道
我們理解這兩種方法的作用是非常重要。
在後面的課程中,我們會大量使用這兩種方法。到時候需要大家多次加深印象。
朋友會在“發現-看一看”看到你“在看”的內容