前言
本文介紹Asp.Net Core 中間件。
環(huán)境
1.Visual Studio 2017
2.Asp.Net Core 2.2
開(kāi)局
第一手:中間件概述
1.中間件:添加到應(yīng)用管道用于處理處理請(qǐng)求和響應(yīng)的組件遵堵。每個(gè)組件:
- 可以選擇是否將請(qǐng)求傳遞到管道中的下一個(gè)組件鸯乃;
- 可以在調(diào)用管道中的下一個(gè)組件之前和之后執(zhí)行工作辙喂;
2.管道:如圖中黑色箭頭拌滋,從請(qǐng)求到相應(yīng)的過(guò)程操刀,稱之為管道乒验;
3.上圖解釋:當(dāng)Request進(jìn)來(lái)時(shí)俄认,首先進(jìn)入Middleware1往毡,然后調(diào)用next方法進(jìn)入Middleware2蒙揣,
然后調(diào)用next方法進(jìn)入Middleware3,沒(méi)有next方法所以再依次返回开瞭,完成管道處理鸣奔;
4.三種方法添加中間件:
- Use:通常使用Use,Use也可使管道短路惩阶,即不調(diào)用next方法挎狸;
- Run:Run一般在管道末端使用Run方法;
- Map:Map一般用于處理特定的請(qǐng)求路徑断楷。
下面介紹這三種方法的使用锨匆。
第二手:中間件使用
1.Use的使用
1.說(shuō)一下IApplicationBuilder,Use冬筒、Run恐锣、和Map添加中間件,其實(shí)都是添加到IApplicationBuilder
中的一個(gè)組件容器內(nèi)舞痰,在執(zhí)行時(shí)土榴,會(huì)遍歷這個(gè)組件容器,依次執(zhí)行中間件响牛。
2.Run的使用
3.Map的使用
內(nèi)置中間件
Asp.Net Core內(nèi)置了以下中間件(用法:Use{中間件}):
中間件 |
描述 |
順序 |
Authentication |
提供身份驗(yàn)證支持玷禽。 |
在需要 HttpContext.User 之前赫段。 OAuth 回叫的終端。 |
Cookie Policy |
跟蹤用戶是否同意存儲(chǔ)個(gè)人信息矢赁,并強(qiáng)制實(shí)施 cookie 字段(如 secure 和 SameSite )的最低標(biāo)準(zhǔn)糯笙。 |
在發(fā)出 cookie 的中間件之前。 示例:身份驗(yàn)證撩银、會(huì)話给涕、MVC (TempData)。 |
CORS |
配置跨域資源共享额获。 |
在使用 CORS 的組件之前够庙。 |
Diagnostics |
配置診斷。 |
在生成錯(cuò)誤的組件之前抄邀。 |
Forwarded Headers |
將代理標(biāo)頭轉(zhuǎn)發(fā)到當(dāng)前請(qǐng)求耘眨。 |
在使用已更新字段的組件之前。 示例:方案撤摸、主機(jī)、客戶端 IP褒纲、方法准夷。 |
Health Check |
檢查 ASP.NET Core 應(yīng)用及其依賴項(xiàng)的運(yùn)行狀況,如檢查數(shù)據(jù)庫(kù)可用性莺掠。 |
如果請(qǐng)求與運(yùn)行狀況檢查終結(jié)點(diǎn)匹配衫嵌,則為終端。 |
HTTP Method Override |
允許傳入 POST 請(qǐng)求重寫方法彻秆。 |
在使用已更新方法的組件之前楔绞。 |
HTTPS Redirection |
將所有 HTTP 請(qǐng)求重定向到 HTTPS(ASP.NET Core 2.1 或更高版本)。 |
在使用 URL 的組件之前唇兑。 |
HTTP Strict Transport Security (HSTS) |
添加特殊響應(yīng)標(biāo)頭的安全增強(qiáng)中間件(ASP.NET Core 2.1 或更高版本)酒朵。 |
在發(fā)送響應(yīng)之前,修改請(qǐng)求的組件之后扎附。 示例:轉(zhuǎn)接頭蔫耽、URL 重寫。 |
MVC |
用 MVC/Razor Pages 處理請(qǐng)求(ASP.NET Core 2.0 或更高版本)留夜。 |
如果請(qǐng)求與路由匹配匙铡,則為終端。 |
OWIN |
與基于 OWIN 的應(yīng)用碍粥、服務(wù)器和中間件進(jìn)行互操作鳖眼。 |
如果 OWIN 中間件處理完請(qǐng)求,則為終端嚼摩。 |
Response Caching |
提供對(duì)緩存響應(yīng)的支持钦讳。 |
在需要緩存的組件之前矿瘦。 |
Response Compression |
提供對(duì)壓縮響應(yīng)的支持。 |
在需要壓縮的組件之前蜂厅。 |
Request Localization |
提供本地化支持匪凡。 |
在對(duì)本地化敏感的組件之前。 |
Routing |
定義和約束請(qǐng)求路由掘猿。 |
用于匹配路由的終端病游。 |
Session |
提供對(duì)管理用戶會(huì)話的支持。 |
在需要會(huì)話的組件之前稠通。 |
Static Files |
為提供靜態(tài)文件和目錄瀏覽提供支持衬衬。 |
如果請(qǐng)求與文件匹配,則為終端改橘。 |
URL Rewriting |
提供對(duì)重寫 URL 和重定向請(qǐng)求的支持滋尉。 |
在使用 URL 的組件之前。 |
WebSockets |
啟用 WebSockets 協(xié)議飞主。 |
在接受 WebSocket 請(qǐng)求所需的組件之前狮惜。 |
第三手:中間件自定義
1.創(chuàng)建自定義中間件類,并提供使用它的擴(kuò)展方法
2.在Configure方法中調(diào)用
3.運(yùn)行
終局
本文介紹Asp.Net Core中間件碌识,下局介紹路由碾篡,待續(xù)...
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者