实现路由的RouterMiddleware中间件
2016-12-30 22:21
405 查看
实现路由的RouterMiddleware中间件
[code]
[/code]
[/code]
如下所示的代码片段体现了RouterMiddleware处理请求的完整逻辑。我们在创建一个RouterMiddleware对象的时候需要指定一个Router对象,以及一个用来创建Logger的LoggerFactory。当这个中间件开始处理请求的时候,它会根据当前HttpContext创建一个RouteContext上下文对象,并将其作为参数调用Router的RotueAsync方法进行路由解析。如果在路由解析结束之后通过RouteContext的Handler属性返回的请求处理存在,意味着当前请求与注册的路由匹配,在此情况下它会将当前请求交给这个处理器做后续处理。在这之前它会从RouteContext上下文中提出出RouteData,然后据此创建一个RoutingFeature对象并附加到HttpContext上面。
[code][code]
[/code]
[/code]
我们除了可以调用HttpContext的扩展方法GetRouteData得到封装了路由参数的RouteData对象之前,我们还可以调用另一个名为GetRouteValue发的扩展方法直接获取某个路由参数的值。在如下所示的代码片段中,我们采用比较简单代码展示了这两个扩展放的实现。
[code][code]
[/code]
[/code]
一般来说我们倾向于调用ApplicationBuilder的扩展方法UseRouter来注册RouterMiddleware中间件。具体来说,我们可以选择如下两个UseRouter方法重载。如果调用第一个重载,我们需要为注册的RouterMiddleware中间件提供一个具体的Router对象。对于第二个重载来说,这个Router对象实际上是利用RouteBuilder创建的,我们在调用这个方法的时候需要以Action<IRouteBuilder>对象的形式利用这个RouteBuilder注册所需的路由。
[code][code]
[/code]
[/code]
ASP.NET Core的路由[1]:注册URL模式与HttpHandler的映射关系
ASP.NET Core的路由[2]:路由系统的核心对象——Router
ASP.NET Core的路由[3]:Router的创建者——RouteBuilder
ASP.NET Core的路由[4]:来认识一下实现路由的RouterMiddleware中间件
ASP.NET Core的路由[5]:内联路由约束的检验
相关文章推荐
- 三十一、【WCF路由中间件】WCFHosting服务主机的路由器与负载均衡和实现思路
- 路由模拟——路由算法1的实现(路由基因类)
- 路由模拟——设计方案的实现(1)
- 开启ADSL MODEM的路由功能实现多机共享上网(包月用户最优方法)
- 湖南“侠诺”多WAN口路由器,实现策略路由,限制P2P,网吧高性能路由
- Vlan间路由实验(单臂路由实现法)
- Vlan间路由实验(单臂路由实现法) 推荐
- 利用windows脚本实现路由的转换
- 中国推出实现Java EE5.0全球最新规范的金蝶Apusic中间件
- 实现Linux下多播路由
- 路由模拟——设计方案的实现(2)
- 路由模拟——路由算法1的实现(路由计算类1)
- 多VLAN环境中DHCP服务的实现[利用路由实现共享上网]
- [原创]使用自定义类库实现中间件的功能
- 路由模拟——路由算法1的实现(基因集合类)
- 路由模拟——设计方案的实现(3)
- 路由模拟——设计方案的实现(5)
- 路由模拟——路由算法2的实现
- 用两种方式实现基于源地址的策略路由
- Asp.net中XML文件作为中间件进行数据交换功能的实现(c#,sql2000)