以前,作傳統的 ASP.NE 開發的時候不少人都不知道 Asp.Net 的程序入口在哪兒, 由於找不到傳說當中的 Main
函數。可是在 ASP.NET Core 中,Main
函數被暴漏出來了, 它默認被放在Program.cs
裏邊,長這個樣子:web
public class Program { public static void Main(string[] args) { var host = new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<Startup>() .UseApplicationInsights() .Build(); host.Run(); } }
.UseKestrel()
使用 Kestrel
作爲 web應用程序的 HTTP 服務器,其實 ASP.NET Core 自帶了兩個不一樣的 HTTP 服務器:服務器
Microsoft.AspNetCore.Server.Kestrel (支持跨平臺)app
Microsoft.AspNetCore.Server.WebListener (僅 Windows 可用)函數
.UseContentRoot(Directory.GetCurrentDirectory())
設置應用程序的根目錄,該目錄存放的是應用自身內部所需的資源(須要注意和 WebRootPath
的區別,WebRootPath
指向的目錄用於存放能夠經過HTTP請求訪問的資源,通常是 wwwroot
文件夾)。ui
.UseIISIntegration()
讓應用程序支持在IIS 裏邊運行(實際上是把IIS 當一個反向代理來用),若是應用程序不在IIS 裏邊跑,能夠把這行刪掉。代理
.UseStartup<Startup>()
指定應用程序的啓動類, Startup
是 ASP.NET Core應用程序啓動過程當中一個很是、很是重要的類。ASP.NET Core 沒有強制對這個類進行類型約束,可是對這個類有一個約定,必須有下邊兩個方法:code
ConfigureServices(IServiceCollection services)資源
Configure(IApplicationBuilder app);開發
.UseApplicationInsights()
使用 Application Insights ,我的感受不上微軟的雲 這個選項用處不大,能夠去掉。string
.Build();
開始構造 WebHost, 事實上這個構造是一個很複雜的過程,後續再仔細研究。