路由机制是Asp.Net MVC中一个非常核心的概念,所有的http请求都需要通过路由来进行分配和计算,路由对http请求进行匹配获取相对应的Controller和Action。
在MVC项目中“App_Start”文件夹下面有“RouteConfig.cs” 文件,通过该类来注册相关路由。路由会从上往下依次匹配,如果匹配上就直接返回了下面的就不会在匹配了,所以这里就要产生了优先级的问题(越上面优选级越高)。
如果路由规则比较多这个优先级就不太好处理了,如何确保所有的路由都是正确的或者是没有重复的?今天我分享一个工具:RouteDebugger
安装 RouteDebugger
RouteDebugger可以通过NuGet来安装或者直接下载安装包安装。
1、右键点击MVC项目 —> 管理 NuGet 程序包 (下图)

2、打开 NuGet 以后,左侧菜单选择“联机”—>右边输入“Route Debugger”,系统就会自动搜索,搜索到以后点击安装就可以了。(下图)

至此 RouteDebugger 就安装完成了。
注意事项:
- RouteDebugger 2.x版本对应.NET4.0和MVC3,旧版本请参考Phil Haack的ASP.NET Routing Debugger
- RouteDebugger 也可以通过使用 NuGet控制台来安装。导航菜单“工具”—> “库程序包管理器” —>“程序包管理器控制台” —> 输入:Install-Package routedebugger
使用方法
不需要做任何配置,就可以直接运行查看效果了。因为.NET4.0新增的程序集Microsoft.Web.Infrastructure允许动态注册HttpModule,RouteDebugger将格式化的路由调试信息追加到每一个request里。
对于.NET3.5和MVC3之前的项目,如果要使用RouteDebugger,还需要在Application_Start中注册:
protected void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
}
运行后的结果(下图)
通过下面的结果我们可以得出,当前的请求地址、使用的那个路由规则、Controller和Action等等信息,通过这些信息我们就可以正确的编写路由规则和路由的优先级。

如何关闭或者禁用该功能?
当使用了RouteDebugger后,你会发现每一个页面的后面都会附带路由信息。如果你需要禁用这个功能,打开Web.config:将RouteDebugger:Enabled后面的value=”false”即可关闭RouteDebugger模式。

发布者:IT柚子,转转请注明出处:https://ityouzi.com/archives/route-debugger-aspnet-mvc.html