[转载]ASP.NET MVC路由匹配检测组件RouteDebug.dll

[转载]ASP.NET MVC路由匹配检测组件RouteDebug.dll – Capricornus – 博客园.

以前使用RouteMonitor.dll进行MVC路由检测URL路径的映射匹配情况。由于公司电脑没有此组件,所以上网搜了下,结果才发现RouteMonitor.dll已经将名称改为了RouteDebug.dll 。具体参阅 官方网站。 下载地址:http://files.cnblogs.com/Capricornus/RouteDebug-Binary.zip

使用方法:

1. 在MVC项目中添加引用此组件

2. 在全局应用程序类Global.asax.cs中设置代码

3.匹配路由如下图:


我们可以使用Reflector反编译这个RouteDebugger.dll组件,查看一下原理。如图:

RouteDebug中包含了DebugHttpHandler、DebugRoute、DebugRouteHandler、RouteDebugger这4个类。

首先从我们调用RouteDebug.RouteDebugger.RewriteRoutesForTesting的着手。


RouteDebugger类:

首先,整个代码是使用System.Web.Routing命名空间下的RouteCollection.GetReadLock()锁定的,提供 一个对象,用于管理在从集合中检索对象时的线程安全性;然后遍历我们传过来的路由集合参数。用RouteDebug中的 DebugRouteHandler去替换原有RouteHandler,以便改变Http处理程序的方向,接着将Singletion属性的值添加到路 由结合中。


DebugRoute类:

DebugRoute继承与Route类,构造函数实现了构造可捕获所有URL地址的Route。


DebugRouteHandler路由处理程序类:

实现IHttpHanlder接口的实例化对象,传入了一个RequestContext对象实例。


DebugHttpHandler类:

通过ProcessRequest方法来处理请求,最后呈现在路由检测的页面上。

首先从RequestContext.RouteData可以得到RouteData类,RouteData类包含所请求路由的相关值。从 RouteData.Values获取路由的URL参数值和默认值集合,在从RouteData.Route获取路由的对象,在获取有关集合中与指定值匹 配的路由信息.

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏