ASP.NET Core 啟動(1)
ASP.NET Core 應用是一個控制檯應用
它在 Program.cs
的Main
方法中建立 Web 伺服器。
Main 方法整個應用的入口:
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
.NET Core 的宿主WebHost主要執行以下任務:
- 載入.NET Core runtime.
- 啟動應用
Main方法通過生成器模式來呼叫WebHost.CreateDefaultBuilder來建立宿主主機環境。生成器提供定義 Web 伺服器(例如,UseKestrel)和啟動類 (UseStartup) 的方法。
在上面的例子中,預設分配了 Kestrel Web 伺服器
IWebHostBuilder 是 呼叫WebHost.CreateDefaultBuilder
的返回型別,它提供了許多可選方法。 其中的一些方法包括用於在 HTTP.sys 中託管應用的 UseHttpSys
,以及用於指定根內容目錄的 UseContentRoot,還有提供Build 和 Run 方法生成 IWebHost 物件,該物件啟動後就開始託管應用並開始偵聽 HTTP 請求。
Startup 類用於定義請求處理管道和配置注入應用所需的任何服務。 Startup 必須是公共類,幷包含以下方法:
public class Startup
{
// This method gets called by the runtime. Use this method
// to add services to the container.
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)
{
}
}
ConfigureServices 定義應用所使用的服務(所謂服務就是一類第三方類庫)(如 ASP.NET Core MVC、Entity Framework Core 和標識)。Configure 定義在請求管道中呼叫的中介軟體。
總上所述:
- ASP.NET Core 是一個控制應用。
- ASP.NET Core 的啟動入口是在
Program.cs
的Main
方法中。 - ASP.NET Core 啟動會初始化一個宿主,該宿主用來託管應用。
- ASP.NET Core 因為是一個控制檯應用,所以肯定是沒有http能力的,於是內建了一個Web服務。
- ASP.NET Core 是一個大框架,該框架可以跨平臺。
- ASP.NET Core 的啟動就是初始化一個 IWebHost
物件。
接下來,我開始講Startup相關,依然是啟動過程。
相關文章
- ASP.NET Core系列(三):啟動類StartupASP.NET
- Asp.net Core啟動流程講解(四)ASP.NET
- ASP.NET Core使用HostingStartup增強啟動操作ASP.NET
- 一張圖理清ASP.NET Core啟動流程ASP.NET
- ASP.NET Core基礎知識(二)【應用啟動】ASP.NET
- 【asp.net core 系列】 1 帶你瞭解一下asp.net coreASP.NET
- gRPC in ASP.NET Core 3.0 -- Protocol Buffer(1)RPCASP.NETProtocol
- asp.net core 系列之Response caching(1)ASP.NET
- ASP.NET CORE中判斷是否移動端開啟網頁ASP.NET網頁
- ASP.NET Core 3.x控制IHostedService啟動順序淺探ASP.NET
- 【.NET Core】ASP.NET Core之IdentityServer4(1):快速入門ASP.NETIDEServer
- ASP.NET Core Basic 1-1 WebHost與專案配置ASP.NETWeb
- ASP.NET Core-自動對映ASP.NET
- 【原始碼解讀】asp.net core原始碼啟動流程精細解讀原始碼ASP.NET
- ASP.NET Core 3.x啟動時執行非同步任務(一)ASP.NET非同步
- ASP.NET Core 3.x啟動時執行非同步任務(二)ASP.NET非同步
- ASP.NET Core ----ASP.NET Core中使用Code FirstASP.NET
- ASP.NET 6.0 Core 遷移 ASP.NET Core 7.0ASP.NET
- 【ASP.NET Core】動態對映MVC路由ASP.NETMVC路由
- Jenkins + Docker + ASP.NET Core自動化部署JenkinsDockerASP.NET
- .NET Core ASP.NET Core Basic 1-2 控制反轉與依賴注入ASP.NET依賴注入
- ASP.NET Core 奇淫技巧之動態WebApiASP.NETWebAPI
- Docker & ASP.NET Core (1):把程式碼連線到容器DockerASP.NET
- 在ASP.NET Core中用HttpClient(六)——ASP.NET Core中使用HttpClientFactoryASP.NETHTTPclient
- asp.net core + jenkins 實現自動化釋出ASP.NETJenkins
- .NET 9 RC1 正式釋出,ASP.NET Core 得到完善ASP.NET
- 【譯】.NET 7 預覽版 1 中的 ASP.NET Core 更新ASP.NET
- ASP.NET Core - 開篇ASP.NET
- Asp.Net Core SwaggerUI 接入ASP.NETSwaggerUI
- asp.net core 整合JWTASP.NETJWT
- asp.net core 整合 PrometheusASP.NETPrometheus
- asp.net core啟動原始碼以及監聽,到處理請求響應的過程ASP.NET原始碼
- ASP.NET Core 中基於工廠的中介軟體啟用ASP.NET
- ASP.NET Core Web API 索引 (更新Redis in .NET Core)ASP.NETWebAPI索引Redis
- 【asp.net core 系列】14 .net core 中的IOCASP.NET
- ASP.Net Core5.0 EF Core使用記錄ASP.NET
- ASP.NET core 2.2 截圖ASP.NET
- ASP.NET Core 中使用TypeScriptASP.NETTypeScript