在這篇文章中,我將帶領大家詳細學習ASP.NET Core 中的Main方法。在這篇文章中,我將向大家詳細介紹下麵幾個問題:ASP.NET Core Main方法的重要性為什麼我們在ASP.NET Core中會有一個Main方法?當你運行一個ASP.NET Core應用程式的時候,背後發生了什麼?為... ...
在這篇文章中,我將帶領大家詳細學習ASP.NET Core 中的Main方法。在這篇文章中,我將向大家詳細介紹下麵幾個問題:
- ASP.NET Core Main方法的重要性
- 為什麼我們在ASP.NET Core中會有一個Main方法?
- 當你運行一個ASP.NET Core應用程式的時候,背後發生了什麼?
為瞭解釋這些問題,我們首先打開,在之前的文章中,新建的空模板的ASP.NET Core項目。
你可以看到我們有一個Program類文件,裡面包含圖中所示的代碼。
從上圖中,我們可以看到程式包含一個公共的靜態無返回值的Main方法,我們已經知道,當我們創建控制台應用程式的時候,也會有有一個Program類,其中也有一個Main方法。控制台應用程式中的Main方法,是應用程式的入口。
現在的問題是,我們這裡並不是創建的控制台應用程式,而是創建的一個ASP.NET Core Web應用程式,那麼我們為啥也有一個Main方法呢?
為什麼我們在ASP.NET Core中會有一個Main方法?
你需要特別註意的是,ASP.NET Core應用程式,最開始啟動的時候,就是作為一個控制台應用程式啟動的,Main方法就是ASP.NET Core Web應用程式的入口。
所以當我們執行ASP.NET Core應用程式的時候,它會首先去找Main方法,這是應用程式執行的入口。Main方法配置這個ASP.NET Core,然後啟動程式。
如果你仔細查看Main方法的內容,你會發現,它調用的是CreateHostBuilder方法,並且把命令行的參數args作為參數傳遞過去。
下麵的圖片中,CreateHostBuilder方法,返回的是,實現IHostBuilder介面的對象。
在Main方法中,在IHostBuilder對象上,當Build方法被調用的時候,就會生成一個Web主機。然後我們的ASP.NET Core應用程式就會托管在主機中。
最後,在Web主機上,我們調用了Run方法,就會啟動我們的Web應用程式,也就開始偵聽HTTP請求了。
CreateHostBuilder方法調用靜態的CreateHostBuilder方法, 方法配置主機的預設設置。現在先就這麼理解吧:CreateDefaultBuilder創建了一個有預設設置的主機。
Startup 類
當我們創建了Web主機,Startup類同樣使用了IWebHostBuilder 介面的UseStarpup擴展方法來配置。Starpup有下麵兩個方法:
ConfigureServices配置應用程式所需要的服務,Configure方法配置應用程式請求的管道。在後面的文章中,我將會詳細介紹這兩個方法。
在下篇文章中,我將會,帶領大家學習ASP.NET Core InProcess 托管。這篇文章,我向大家介紹了ASP.NET Core 中的Main方法。希望能幫到大家。