1.本次学习的代码,比较简单,就是在路由配置文件中,添加一个路由信息;同时添加一个相应的控制器及视图
控制器中代码如下
即有两条路由匹配规则,一个Kim控制器,该控制器下有个Index的方法,和一个对应Index视图 |
2.开始配置RouteDebugger
2.1下载程序集
2.2添加引用,并配置RouteDebugger
在网站根目录下的web.config文件中,在<appSetting></appSetting>节点中,添加如下语句
3.开始请求,并看结果
4.看源码,分析原因
public class RouteDebuggerHttpModule : IHttpModule { // Methods public void Dispose() { } public void Init(HttpApplication context) { context.EndRequest += new EventHandler(RouteDebuggerHttpModule.OnEndRequest); context.BeginRequest += new EventHandler(RouteDebuggerHttpModule.OnBeginRequest); } private static void OnBeginRequest(object sender, EventArgs e) { if (RouteTable.Routes.Last<RouteBase>() != DebugRoute.Singleton) { RouteTable.Routes.Add(DebugRoute.Singleton); } } private static void OnEndRequest(object sender, EventArgs e) { new DebugHttpHandler().ProcessRequest(HttpContext.Current); } }
原来在RouteDebugger中,在init()方法中,在请求管道中添加了两个事件,即第一个管道处理事件BeginRequest和最后一个管道处理事件EndRequest,怪不得可以监视整个请求
5.扩展,路由规则的运用
6.路由约束
如果你按照上面的代码运行一遍,你一定会有困惑。因为有时候,你的本次请求,希望它最终匹配的路由规则A,结果它匹配了路由规则B,下面我们就来解决这个问题