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. noip模拟赛 捡金币

    问题描小空正在玩一个叫做捡金币的游戏.游戏在一个被划分成 n行 n列的网格状场地中进行.每一个格子中都放着若干金币,并且金币的数量会随着时间而不断变化. 小空的任务就是在网格中移动,拾取尽量多的金币. ...

  2. jquery ajax报Uncaught TypeError :Illegal invocation

    使用jquery ajax异步提交的时候报Uncaught TypeError :Illegal invocation错误,报错信息如图: 上网查了一下jquery的这个错误,导致这个错误的原因有俩点 ...

  3. 关于Git的简单使用

    新电脑git push一直出问题,到现在也没有解决,但是一些git的命令还是有用的,就先记下来吧.(下图就是没解决的报错) 一.上传本地项目到git 1.初始化git git init 2.配置用户名 ...

  4. Spring + quartz实现定时发送邮件功能

    在做具体的系统管理时,往往会有每隔一段时间发给用户一些邮件的业务,现在参考的网上的大部分代码,写下了我自己的代码. 在ApplicationContext.xml的内容如下: <?xml ver ...

  5. Jenkins+Github持续集成

    由于最近团队代码库从coding迁移到github,在CI工具的选型上尝试了travis-ci和circle-ci,最后决定自己搭建CI服务器,而我也有幸认领了这个任务的调研,因此有了这篇文章. 之前 ...

  6. w3m命令行模式浏览网页

    w3m是一个基于文本的网页浏览器,支持多种操作系统,在命令行终端可以很好的支持中文.即使在没有鼠标支持的情况下也可以检查网页的输出. 我们一般用Ubuntu的X Windows来看图形界面的东西,有没 ...

  7. (转)C++ CListCtrl使用技巧的摘抄

    转:http://blog.csdn.net/sanshao27/article/details/1888315 1. CListCtrl 风格 LVS_ICON: 为每个item显示大图标      ...

  8. Qt学习之QListWidget删除Item

    将QListWidgetItem从QListWidget列表中删除有两种方法能够做到.但也要依据自己的须要进行选择. 第一种是 QListWidgetItem *takeItem(int row); ...

  9. sqlite 数据库 相关知识

    一基本简单介绍 SQLite 是一个自持的(self-contained).无server的.零配置的.事务型的关系型数据库引擎.由于他非常小,所以也能够作为嵌入式数据库内建在你的应用程序中. SQL ...

  10. C#使用oledb连接excel运行Insert Into语句出现“操作必须使用一个可更新的查询”的解决的方法

    我错误发生时的环境:Windows 7,Framework 4.0,Microsoft Office 2007,VS2010,c# WinForm. 部分代码: string strConn = &q ...