當(dāng)某個(gè)請(qǐng)求能夠被成功路由的前提是它滿足某個(gè)Route對(duì)象設(shè)置的路由規(guī)則,具體來(lái)說(shuō),當(dāng)前請(qǐng)求的URL不僅需要滿足路由模板體現(xiàn)的路徑模式,請(qǐng)求還需要滿足Route對(duì)象的所有約束。路由系統(tǒng)采用IRouteConstraint接口來(lái)表示路由約束,所以我們?cè)诮酉聛?lái)的內(nèi)容中將路由約束統(tǒng)稱為RouteConstraint。 在大部分情況下,約束都是針對(duì)路由模板中定義的某個(gè)路由參數(shù),其目的在于驗(yàn)證URL攜帶的某部分的內(nèi)容是否有效。不過(guò)也有一些約束與路由參數(shù)無(wú)關(guān),這些約束規(guī)范往往是除URL之前的其他請(qǐng)求元素,比如前面提到的HttpMethodRouteConstraint檢驗(yàn)的就是請(qǐng)求采用的方法。 [本文已經(jīng)同步到《ASP.NET Core框架揭秘》之中]

   1: public interface IRouteConstraint
   2: {
   3:     bool Match(HttpContext httpContext, IRouter route, string routeKey,
   4:     RouteValueDictionary values, RouteDirection routeDirection);
   5: }

網(wǎng)友評(píng)論