1.本次学习的代码,比较简单,就是在路由配置文件中,添加一个路由信息;同时添加一个相应的控制器及视图

控制器中代码如下

即有两条路由匹配规则,一个Kim控制器,该控制器下有个Index的方法,和一个对应Index视图

2.开始配置RouteDebugger

2.1下载程序集

RouteDebugger-2.1.3.0下载地址

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,下面我们就来解决这个问题

MVC系列学习(十四)-路由规则及路由调试工具的更多相关文章

  1. MVC学习十四:MVC 路由 Route

    一.MVC路由(Route)是什么? MVC路由(Route)可以理解规定用户访问网站方式的配置文件,就例如:我们在访问普通页面时http://xxxx/web/xx.aspx,但在MVC中我们的访问 ...

  2. C# MVC ( 添加路由规则以及路由的反射机制 )

    在项目文件夹下找到 App_Start 下 找到 RouteConfig.cs文件 打开   (1) 约束的规则 从上往下 贪婪性   (2) 用 routes.MapRoute(...) 添加   ...

  3. MVC系列学习(十)-生成URL与表单

    本次学习,在路由配置信息中,有两个路由规则,在网站第一次启动的时候,注册了两个路由表 1.动态生成url A.在路由规则中,因为Default在前面,所以最新找到该路由表,此时不管 自己定义的控制器名 ...

  4. MVC系列学习(十六)-区域的学习

    1.查找控制器的过程 1.1调用其他项目中的控制器 a.先到网站根目录下的bin文件夹下,遍历所有的程序集 b.找到以Controller结尾的类 c.再找出其中继承了Controller的类 d.接 ...

  5. MVC系列学习(十五)-验证码

    1.方式一: public class VCode { /// <summary> /// 生成验证码图片 字节数组 /// </summary> /// <return ...

  6. Java系列学习(十四)-集合

    1.java中的集合学习 2.Collection中常用方法 1.添加功能 boolean add(E e):添加一个元素 boolean addAll(Collection<? extends ...

  7. MVC系列学习(十二)-服务端的验证

    在前一讲,提到过,客户端的东西永远可以造假,所以我们还要在服务端进行验证 注意:先加载表单,后添加js文件,才能有效:而先加载js,后添加表单,是没有效果的 1.视图与Model中的代码如下 2.一张 ...

  8. asp.net mvc 通过修改路由规则来实现页面的URL多参数传递

    [原文]http://blog.csdn.net/risingsun001/article/details/9068187 修改MVC3中的路由规则 在Global.asax.cs中,修改路由规则 原 ...

  9. MVC前后台获取Action、Controller、ID名方法 以及 路由规则

    前后台获取Action.Controller.ID名方法 前台页面:ViewContext.RouteData.Values["Action"].ToString();//获取Ac ...

随机推荐

  1. QQ帐户的申请与登陆

    QQ帐户的申请与登陆 实现QQ新帐户申请和老帐户登陆的简化版功能.最大挑战是:据说现在的QQ号码已经有10位数了. 输入格式: 输入首先给出一个正整数N(≤10^5,随后给出N行指令.每行指令的格式为 ...

  2. [bzoj1820][JSOI2010][Express Service 快递服务] (动态规划)

    Description 「飞奔」快递公司成立之后,已经分别与市内许多中小企业公司签订邮件收送服务契约.由于有些公司是在同一栋大楼内,所以「飞奔」公司收件的地点(收件点)最多只有m点 (1, 2, …, ...

  3. ACE in Action

    ACE in Action https://cdn.xgqfrms.xyz/web-ide/index.html TinyMCE https://panjiachen.github.io/vue-el ...

  4. C语言编程规范试题(标准答案)

    C语言编程规范试题(标准答案) 一.单选题(每小题3分,共20小题60分) 1.1-1.5    B D A C B                1.6-1.10    C A D B C 1.11 ...

  5. Happy 2006 欧几里得定理

    Happy 2006 Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 11956   Accepted: 4224 Descr ...

  6. jq仿苹果的时间/日期选择效果

    1.html文件,index.html <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  7. 使用系统存储过程来监控SQLServer进程和会话具体解释

     承接上文,本文讲述怎样使用系统存储过程来监控系统. SQLServer相同也提供了一系列系统存储过程用于监控SQLServer,获取当前进程.会话.请求以及锁定的具体信息.本文将演示系统存储过程 ...

  8. 【bzoj3105】【cqoi2013】【新Nim游戏】【线性基+贪心】

    Description 传统的Nim游戏是这种:有一些火柴堆,每堆都有若干根火柴(不同堆的火柴数量能够不同).两个游戏者轮流操作,每次能够选一个火柴堆拿走若干根火柴.能够仅仅拿一根,也能够拿走整堆火柴 ...

  9. java web项目优化记录:优化考试系统

    考试系统在进行压力測试时发现,并发量高之后出现了button无反应.试题答案不能写到数据库的问题,于是针对这些核心问题,进行了优化. 数据库方面: Select语句:Select * from TEB ...

  10. hdu 1024 Max Sum Plus Plus (子段和最大问题)

    Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...