ASP.NET Core 之 Main 函數

以前,作傳統的 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();
        }
    }
  1. .UseKestrel() 使用 Kestrel 作爲 web應用程序的 HTTP 服務器,其實 ASP.NET Core 自帶了兩個不一樣的 HTTP 服務器:服務器

    • Microsoft.AspNetCore.Server.Kestrel (支持跨平臺)app

    • Microsoft.AspNetCore.Server.WebListener (僅 Windows 可用)函數

  2. .UseContentRoot(Directory.GetCurrentDirectory()) 設置應用程序的根目錄,該目錄存放的是應用自身內部所需的資源(須要注意和 WebRootPath 的區別,WebRootPath指向的目錄用於存放能夠經過HTTP請求訪問的資源,通常是 wwwroot 文件夾)。ui

  3. .UseIISIntegration() 讓應用程序支持在IIS 裏邊運行(實際上是把IIS 當一個反向代理來用),若是應用程序不在IIS 裏邊跑,能夠把這行刪掉。代理

  4. .UseStartup<Startup>() 指定應用程序的啓動類, Startup 是 ASP.NET Core應用程序啓動過程當中一個很是、很是重要的類。ASP.NET Core 沒有強制對這個類進行類型約束,可是對這個類有一個約定,必須有下邊兩個方法:code

    • ConfigureServices(IServiceCollection services)資源

    • Configure(IApplicationBuilder app);開發

  5. .UseApplicationInsights() 使用 Application Insights ,我的感受不上微軟的雲 這個選項用處不大,能夠去掉。string

  6. .Build(); 開始構造 WebHost, 事實上這個構造是一個很複雜的過程,後續再仔細研究。

相關文章
相關標籤/搜索