在此解釋一下,空氣路由,是本人臆想出來,覺著更能表達(dá) IgnoreRoute 的意圖,如果看著辣眼睛^^,請見諒。

問題

我們在之定義過集中式路由,集中式路由有一個(gè)特點(diǎn)就是短路,但是現(xiàn)在我們不想讓某些路由工作(匹配并由路由引擎處理請求)。那么我們應(yīng)該怎么辦呢?

 

解決方案

其實(shí)思路很簡單,就是想把某些路由忽略了。ASP.NET WEB API 提供了一個(gè)叫做的 StopRoutingHandler 的處理器,簡單說,他就是一個(gè)消息處理器,可以通過他來強(qiáng)制指定的路由被忽略掉。他是 System.Web.Http 的一部分,從 Web API 2.1 開始被引入的。StopRoutingHandler 處理器作用在指定路由上的表現(xiàn)就是,強(qiáng)制 HttpRouteDispatcher 把該路由當(dāng)成空氣。

 

注意 ASP.NET MVC 有自己把版本的StopRoutingHandler(位于 Systme.Web)。如果 ASP.NET WEB API 運(yùn)行在一個(gè)完全的 ASP.NET 運(yùn)行時(shí)之上,同時(shí)有權(quán)限訪問 System.Web 的話,那么,一樣會對 ASP.NET WEB API 起作用。

 

工作原理

ASP.NET WEB API 會匹配所有他能夠的匹配到的請求,如果發(fā)現(xiàn)那些路由的被忽略的,他就不會去處理他。這也可能是一個(gè)對靜態(tài)文件的請求,這樣的請求必須有服務(wù)器層面來處理,或者說,如果運(yùn)行了一個(gè) OWIN 管道,他是需要被指定的 OWIN 中間件調(diào)用處理的。

 

注意 OWIN 中間件是順序處理的,如果 在 OWIN 管道最開始就注冊了ASP.NET WEB API,通常是需要在 ASP.NET W

網(wǎng)友評論