網(wǎng)站首頁 編程語言 正文
1.前言
Core與早期版本的 ASP.NET 對比,配置應用程序的方式的 Global.asax、FilterConfig.cs和RouteConfig.cs 都被Program.cs 和 Startup.cs取代了。Program.cs作為Web應用程序的默認入口,在沒有任何修改的情況下,會調(diào)用同目錄下Startup.cs中的ConfigureServices 和 Configure方法。
2.Startup類
Startup類配置服務和應用的請求管道。Program.Main方法是應用程序的托管入口。在構(gòu)建應用程序的主機(WebHost)時,系統(tǒng)為應用程序指定 Startup 類,而Main入口通過主機生成器(IWebHostBuilder)調(diào)用Build時,生成對應的應用程序的主機(WebHost),并啟動運行(Run)。
public class Program { public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup(); }
2.1 當應用程序啟動時調(diào)用 Startup類
當應用程序啟動時,運行時會調(diào)用Startup類的 ConfigureServices 和 Configure方法:
public class Startup { // Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { ... } // Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app) { ... } }
Startup類必須定義Configure方法,但是可選擇定義一個ConfigureServices 方法,這些方法將在應用程序啟動時被調(diào)用。下面我們再來了解下這兩個方法。
3.ConfigureServices方法
用于設置應用程序所需要的服務。
- 該方法可選擇定義或不定義。
- 在Configure方法配置應用程序服務之前被主機(WebHost)調(diào)用。
- 其中按常規(guī)設置配置選項(appsettings.json)。
對于需要大量設置的功能,IServiceCollection 上有 Add{Service} 擴展方法。 典型 ASP.NET Core 應用將為實體框架(Entity Framework)、標識(Identity)和 MVC 注冊服務:
public void ConfigureServices(IServiceCollection services) { // 添加 Entity Framework服務 services.AddDbContext(options => options.UseSqlServer( _Configuration.GetConnectionString("DefaultConnection"))); services.AddDefaultIdentity () .AddDefaultUI(UIFramework.Bootstrap4) .AddEntityFrameworkStores (); // 添加MVC設置兼容版本服務. services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); // 添加應用程序服務. services.AddTransient (); services.AddTransient (); }
將服務添加到服務容器,使其在應用程序和Configure方法中可用。服務通過依賴關(guān)系注入(DI)或 ApplicationServices 進行解析。
4.Configure方法
用于指定應用程序響應HTTP請求的方式。
可通過將中間件(middleware)組件添加到IApplicationBuilder實例來配置請求管道。Configure方法可使用 IApplicationBuilder,但未在服務容器中注冊。托管創(chuàng)建 IApplicationBuilder并將其直接傳遞到Configure。
通俗點來說,Configure方法用于指定ASP.NET應用程序?qū)⑷绾雾憫總€HTTP請求,你可以配置每個請求都接受相同的響應。而更復雜的管道配置可以封裝于中間件(middleware)中,并通過擴展方法添加到IApplicationBuilder上。Configure方法必須接受一個IApplicationBuilder參數(shù)。
4.1?ASP.NET Core模板配置的管道支持:
- 開發(fā)人員異常頁
- 異常處理程序
- HTTP 嚴格傳輸安全性 (HSTS)
- HTTPS 重定向
- 靜態(tài)文件
- 一般數(shù)據(jù)保護條例 (GDPR)
- ASP.NET Core MVC 和 Razor Pages
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseCookiePolicy(); app.UseMvc(); }
5.總結(jié)
- Program的Main方法用于創(chuàng)建WebHost服務,調(diào)用啟動類Startup。
- Startup中的ConfigureServices方法用于將服務注入到IServiceCollection服務容器中。
- Startup中的Configure方法用于應用響應HTTP請求,將中間件注冊到ApplicationBuilder中來配置請求管道。
原文鏈接:https://www.cnblogs.com/wzk153/p/10861384.html
相關(guān)推薦
- 2022-07-21 python實現(xiàn)利用stack對輸入的式子進行計算算法
- 2022-12-04 C++11中內(nèi)聯(lián)函數(shù)(inline)用法實例_C 語言
- 2022-12-31 go操作Kafka使用示例詳解_Golang
- 2022-07-24 Python實現(xiàn)線程池之線程安全隊列_python
- 2023-12-12 設置線程名稱(兩種方法)
- 2022-04-09 關(guān)于C語言動態(tài)內(nèi)存管理介紹_C 語言
- 2022-06-17 C語言詳細講解多維數(shù)組與多維指針_C 語言
- 2023-07-17 在Linux下禁用、添加|修改Swap分區(qū)(虛擬內(nèi)存)教程
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支