雖然ASP.NET Core應(yīng)用的路由是通過RouterMiddleware這個中間件來完成的,但是具體的路由解析功能都落在指定的Router對象上,不過我們依然有必要以代碼實現(xiàn)的角度來介紹一下這個中間件。在這之前,我們先來認識一個特殊的特性。[本文已經(jīng)同步到《ASP.NET Core框架揭秘》之中]

讓RouterMiddleware中間件委托Router完整整個路由工作之后,解析出來的路由參數(shù)會以一個RouteData對象的形式存儲在RouteContext上下文中。但是RouteContext是為Router的執(zhí)行建立的上下文,路由解析工作完成之后,這個上下文的生命周期也隨著結(jié)束,既然整個RouteContext上下文都不存在了,請求處理的后續(xù)步驟如何獲取這個RouteData對象呢?

通過《注冊URL模式與HttpHandler的映射關(guān)系》的實例演示我們知道可以調(diào)用HttpContext的擴展方法GetRouteData來獲取這個包含素所有路由參數(shù)的RouteData對象,這個意味著原本依附于RouteContext上下文的RouteData最終會被附加到代表當前請求上下文的HttpContext上,而具體承載這個RouteData的就是這個名為RoutingFeature的特性。RoutingFeature是我們對所有實現(xiàn)了IRoutingFeature接口的所有類型以及對應(yīng)對象的統(tǒng)稱。如下面的代碼片段所示,這個接口通過屬性RouteData來保存最終附加到HttpContext的RouteData。RoutingFeature類是這個接口的默認實現(xiàn)者,我們的RouterMiddleware默認情況下就是使用這個對象。

   1: public interface IRoutingFeature
   2: {
        		

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設(shè)計培訓,網(wǎng)站建設(shè)培訓學習是年輕人改變自己的最好方式