在此解釋一下,空氣路由,是本人臆想出來(lái),覺(jué)著更能表達(dá) IgnoreRoute 的意圖,如果看著辣眼睛^^,請(qǐng)見(jiàn)諒。
問(wèn)題
我們?cè)谥x過(guò)集中式路由,集中式路由有一個(gè)特點(diǎn)就是短路,但是現(xiàn)在我們不想讓某些路由工作(匹配并由路由引擎處理請(qǐng)求)。那么我們應(yīng)該怎么辦呢?
解決方案
其實(shí)思路很簡(jiǎn)單,就是想把某些路由忽略了。ASP.NET WEB API 提供了一個(gè)叫做的 StopRoutingHandler 的處理器,簡(jiǎn)單說(shuō),他就是一個(gè)消息處理器,可以通過(guò)他來(lái)強(qiáng)制指定的路由被忽略掉。他是 System.Web.Http 的一部分,從 Web API 2.1 開(kāi)始被引入的。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)限訪問(wèn) System.Web 的話,那么,一樣會(huì)對(duì) ASP.NET WEB API 起作用。
工作原理
ASP.NET WEB API 會(huì)匹配所有他能夠的匹配到的請(qǐng)求,如果發(fā)現(xiàn)那些路由的被忽略的,他就不會(huì)去處理他。這也可能是一個(gè)對(duì)靜態(tài)文件的請(qǐng)求,這樣的請(qǐng)求必須有服務(wù)器層面來(lái)處理,或者說(shuō),如果運(yùn)行了一個(gè) OWIN 管道,他是需要被指定的 OWIN 中間件調(diào)用處理的。
注意 OWIN 中間件是順序處理的,如果 在 OWIN 管道最開(kāi)始就注冊(cè)了ASP.NET WEB API,通常是需要在 ASP.NET W