asp.net core 系列之Startup
這篇文章簡單記錄 ASP.NET Core中 ,startup類的一些使用。
?一.前言
在 Startup類中,一般有兩個方法:
ConfigureServices 方法: 用來配置應(yīng)用的 service 。?
Configure 方法:創(chuàng)建應(yīng)用的請求處理管道
它們都在應(yīng)用啟動時,被ASP.NET Core runtime 調(diào)用:
當應(yīng)用的 host 被built(建立)時,Startup類被指定到應(yīng)用中。
而在 Program 中,當 host builder 上的 Build 被調(diào)用時,應(yīng)用的 host 被 built 。
而Startup類是通過調(diào)用WebHostBuilderExtensions.UseStartup<TStartup>方法指定的。
在startup類中,一種依賴注入的常見用法:
IHostingEnvironment? : 根據(jù)enviironment (環(huán)境) 配置 services .?
IConfiguration?: 讀取配置
ILoggerFactory?: 在Startup.ConfigureServices中創(chuàng)建 logger .?
注入IHostingEnvironment , 當定義不同環(huán)境的Startup (例如,StartupDevelopment 等),在運行時,選擇合適的Startup。?
二.ConfigureServices方法
它有三個特點:
可選的?
在調(diào)用Configure方法之前調(diào)用 ConfigureServices
Configuration options 按約定設(shè)置
1. 比較典型的是調(diào)用 Add{Service} 和 services.Configure{Service} 。例如:Configure Identity services.
?
2. host 可能會 在Startup方法被調(diào)用之前,配置一些服務(wù)。例如:The host.
?
在startup被調(diào)用之前,CreateDefaultBuilder方法配置了一個host 。
3. Add{Service}是IServiceCollection的擴展方法,下面是一些使用:
添加 services 到 service container 使它們在應(yīng)用和Configure方法中可用。services方法可以通過 dependency injection 或 ApplicationServices 解析。
三.The Configure method
Configure方法用來指定應(yīng)用怎樣 處理HTTP request。請求管道(request pipeline)通過添加中間組件到IApplicationBuilder實例中來配置。
ASP.NET Core 模板 配置的管道:
Developer Exception Page
Exception handler
HTTP Strict Transport Security (HSTS)
HTTPS redirection
Static files
General Data Protection Regulation (GDPR)
ASP.NET Core?MVC?and?Razor Pages
使用Use擴展方法添加一個或多個中間組件到請求管道。例如,UseMvc擴展方法添加 Routing Middleware 到請求管道 并且配置MVC 作為一個默認的處理器。
四.Convenience methods
不使用Startup類配置services和request processing pipeline。在host builder 上調(diào)用ConfigureServices和Configure的簡便方法。如果存在多個ConfigureServices的調(diào)用,會依次添加。如果存在多個Configure方法的調(diào)用,最后一個Configure的調(diào)用會被使用。
五.Extend Startup with startup filters (使用startup filter擴展 Startup)
使用 IStartupFilter ,在應(yīng)用的Configure 中間件管道的開頭或末尾配置中間件。
IStartupFilter 實現(xiàn)Configure方法,它會接收和返回一個Action<IApplicationBuilder>。而IApplicationBuilder定義了一個類來配置一個應(yīng)用的請求管道。
這些filters會按照添加到services container的順序被調(diào)用。
下面是一個例子:
RequestSetOptionsMiddleware
RequestSetOptionsMiddleware 中間件被配置在 RequestSetOptionsStartupFilter 類中:
IStartupFilter 在 ConfigureServices中被注冊到 service container, 并且從Startup類的外部增強Startup:
當option的查詢字符串存在時,中間件會在MVC中間件之前處理這個值
中間件的執(zhí)行順序是按照IStartupFilter的注冊順序
六. 補充
這里晚上補充下?ApplicationServices?解析services的使用
參考網(wǎng)址:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/startup?view=aspnetcore-2.2
?原文地址:https://www.cnblogs.com/Vincent-yuan/p/11105523.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?
總結(jié)
以上是生活随笔為你收集整理的asp.net core 系列之Startup的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: netcore mvc快速开发系统(菜单
- 下一篇: 译 | .NET Core 基础架构进化