ASP.NET?Core基礎(chǔ)之Main方法講解
為什么ASP.NET Core采用Main方法?
需要記住的最重要的一點是,ASP.NET Core Web 應(yīng)用程序最初作為控制臺應(yīng)用程序啟動,Main() 方法是應(yīng)用程序的入口點。因此,當(dāng)我們執(zhí)行ASP.NET Core Web應(yīng)用程序時,首先它尋找 Main() 方法,這是執(zhí)行開始的方法。然后,Main()方法將ASP.NET配置并啟動它。此時,應(yīng)用程序?qū)⒊蔀锳SP.NET Core Web應(yīng)用程序。
如果進(jìn)一步查看 Main() 方法的正文,則會發(fā)現(xiàn)它通過將命令行參數(shù) args 作為參數(shù)傳遞來調(diào)用 CreateHostBuilder() 方法,如下所示。
public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); }
如下所示,CreateHostBuilder() 方法返回實現(xiàn) IHostBuilder 接口的對象。主機(jī)是一個靜態(tài)類,可用于創(chuàng)建具有預(yù)配置默認(rèn)值的 IHostBuilder 實例。
CreateDefaultBuilder() 方法使用預(yù)配置的默認(rèn)值創(chuàng)建主機(jī)構(gòu)建器的新實例。在內(nèi)部,它配置 Kestrel(用于ASP.NET的內(nèi)部 Web 服務(wù)器)、IIS整合和其他配置。
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
在 Main()方法中,在此 IHostBuilder 對象上,調(diào)用 Build() 方法,該方法實際生成 Web 主機(jī)。
然后,它將我們asp.net Web 主機(jī)中托管我們的Asp.net Core Web 應(yīng)用程序。
最后,在 Web 主機(jī)上,它稱為 Run() 方法,該方法將實際運行 Web 應(yīng)用程序,并開始偵聽傳入的 HTTP 請求。
啟動類(Startup)
在設(shè)置主機(jī)時,還使用 IHostBuilder 類的 UseStartup() 擴(kuò)展方法配置啟動類。啟動類有兩種方法,如下所示。
public class Startup { // This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapGet("/", async context => { await context.Response.WriteAsync("Hello World!"); }); }); } }
ConfigureServices() 方法配置應(yīng)用程序所需的服務(wù)。Startup 類的Configure() 方法設(shè)置應(yīng)用程序的請求處理管道。
CreateDefaultBuilder() 方法執(zhí)行的任務(wù)是什么?
作為設(shè)置 Web 主機(jī)的一部分,CreateDefaultBuilder() 方法執(zhí)行幾項操作。其中一些如下:
- 設(shè)置 Web 服務(wù)器
- 從各種配置源加載主機(jī)和應(yīng)用程序配置
- 配置日志記錄
在下一章, 我們將討論CreateDefaultBuilder() 方法究竟對配置和設(shè)置 Web 服務(wù)器的作用以及應(yīng)用程序的托管模型。
到此這篇關(guān)于ASP.NET Core基礎(chǔ)之Main方法講解的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Linux Ubuntu系統(tǒng)上手動安裝.NET Core SDK的方法
.NET Core是一個開源通用的開發(fā)框架,支持跨平臺,即支持在Window,macOS,Linux等系統(tǒng)上的開發(fā)和部署,并且可以在硬件設(shè)備,云服務(wù),和嵌入式/物聯(lián)網(wǎng)方案中進(jìn)行使用。下面這篇文章將給大家詳細(xì)介紹關(guān)于在Linux Ubuntu系統(tǒng)上手動安裝.NET Core SDK的方法。2016-12-12Linux下使用Jenkins自動化構(gòu)建.NET?Core應(yīng)用
這篇文章介紹了Linux下使用Jenkins自動化構(gòu)建.NET?Core應(yīng)用的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04.Net結(jié)構(gòu)型設(shè)計模式之代理模式(Proxy)
這篇文章介紹了.Net結(jié)構(gòu)型設(shè)計模式之代理模式(Proxy),文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05ASP.NET處理HTTP請求的流程:IHttpModule、IHttpHandler與管道事件
這篇文章介紹了ASP.NET處理HTTP請求的流程:IHttpModule、IHttpHandler與管道事件,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05一步步打造漂亮的新聞列表(無刷新分頁、內(nèi)容預(yù)覽)第一步
新聞列表是信息管理系統(tǒng)中最常見的,也是最簡單的,一些簡單的新聞列表就是一個table,然后里面循環(huán)寫入數(shù)據(jù)2010-07-07ASP.NET?Core中Startup類、Configure()方法及中間件詳解
本文詳細(xì)講解了ASP.NET?Core中Startup類、Configure()方法及中間件,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-01-01部署ASP.NET?Core程序到Windows系統(tǒng)
這篇文章介紹了部署ASP.NET?Core程序到Windows系統(tǒng)的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03