ASP.NET MVC路由匹配检测组件的代码分析
今天开始学习ASP.NET MVC,在看《ASP.NET MVC架构与实战》时,看到有这样一个组件 RouteMonitor.dll,觉得挺实用的,可以用来检测Url路径的映射匹配情况,只要在浏览器中输入请求地址,就可以得到匹配的情况,并且以一种友好的页面展现给我们,如下图所示:
图一
于是乎,决定先自己分析一下该原理。
1. 我们都知道一个应用程序启动是从Application_Start事件开始的,在创建一个新的ASP.NET MVC应用程序的时候,默认会在该事件中添加
RegisterRoutes(RouteTable.Routes);
接着RegisterRoutes方法里面编写一些路由映射的方法,将请求的URL映射到相应的控制器中。
2. 现在将Application_Start事件中改写成这样的代码:
1 protected void Application_Start()
2 {
3 RegisterRoutes(RouteTable.Routes);
4 RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
5 }
2 {
3 RegisterRoutes(RouteTable.Routes);
4 RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
5 }
注意到第3行的代码,引用的就是RouteMonitor.dll的组件,通过RouteDebugger的静态方法RewriteRoutesForTesting,并且赋予一个RouteCollection的路由集合的参数,将页面映射到图一的页面,便于查看路由映射的情况。
3. 现在开始分析下RouteMonitor.dll里面都有些什么呢。
里面包含DebugHttpHandler类,DebugRoute类,DebugRouteHandler类,RouteDebugger类,我们先看看RouteDebugger类都做了些什么:
1 public static class RouteDebugger
2 {
3 public static void RewriteRoutesForTesting(RouteCollection routes)
4 {
5 //可对路由集合类进行多线程同步访问
6 using (routes.GetReadLock())
7 {
8 bool flag = false;
9 foreach (RouteBase base2 in routes)
10 {
11 Route route = base2 as Route;
12 if (route != null)
13 {
14 route.RouteHandler = new DebugRouteHandler();
15 }
16 if (route == DebugRoute.Singleton)
17 {
18 flag = true;
19 }
20 }
21
2 {
3 public static void RewriteRoutesForTesting(RouteCollection routes)
4 {
5 //可对路由集合类进行多线程同步访问
6 using (routes.GetReadLock())
7 {
8 bool flag = false;
9 foreach (RouteBase base2 in routes)
10 {
11 Route route = base2 as Route;
12 if (route != null)
13 {
14 route.RouteHandler = new DebugRouteHandler();
15 }
16 if (route == DebugRoute.Singleton)
17 {
18 flag = true;
19 }
20 }
21
补充:软件开发 , C# ,
上一个:使用C# 读取XML
下一个:用C#编程合并多个WORD文档
- 更多asp疑问解答:
- asp正则过滤重复字符串的代码
- 用asp过滤全部html但保留br类似的符号
- 会asp,但感觉asp要过点,想学php。但我一般做的都是小公司的站,用access数
- PHP的空间可以用ASP的源代码吗?
- 以前做asp程序,现在应该怎样发展?是学.net还是php
- 以前做asp程序,现在应该怎样发展?是学.net还是php
- 想做一个市级的人才网acess,sql数据库,语言asp,jsp,php分别用哪种好
- jsp,asp,php 区别
- 我想找一个有比较多漏洞的网站的源码,比如可以asp,php注入等都可以。供学习研究用。请提供下载地址。。
- 现在候找人做个网站,用ASP,还是PHP语言去做好
- asp,php ,jsp,.net 对于做网站前台的重要吗?
- asp和php的区别是什么?
- 我是新手SEO菜鸟 请问wp dw php asp cms myspl dede 这些软件应该如何区分呀?
- 网页制作相关的三种语言:ASP JSP PHP那个好点,简单点?
- 网页制作相关的三种语言:ASP JSP PHP那个好点,简单点?