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