Asp.Net MVC路由調試的好幫手RouteDebugger


RouteDebugger是什么?

在Asp.Net MVC程序中,路由(Route)是一個非常核心的概念,可以說是MVC程序的入口,因為每一個Http請求都要經過路由計算,然后匹配到相應的Controller和Action。通常我們的路由都會注冊在Global.asax.cs文件中的RegisterRoutes方法中,路由會從上往下依次匹配,因此自定義的(優先級高)的路由需要放在默認(通用)路由的前面。但是,如何確保所有的路由都是正確的,或者是沒有重復的呢?RouteDebugger就是這樣一個分析工具。

安裝

可以使用NuGet很方便的安裝RouteDebugger,在項目上面右鍵-"Manage NuGet Packages"-"Online"輸入"RouteDebugger"然后"Install",或者在"Package Manager Console"中輸入:"Install-Package routedebugger"安裝即可。由於NuGet有時會莫名其妙被牆,我上傳了一個壓縮文件:RouteDebugger 2.1.3

注意:RouteDebugger 2.x版本對應.NET4.0和MVC3,舊版本請參考Phil Haack的ASP.NET Routing Debugger

使用

當你成功安裝后,可以看到項目引用了"RouteDebugger",然后?然后按F5運行程序你就可以看到效果了。是的,你甚至都不需要配置任何一行代碼!這是因為.NET4.0新增的程序集Microsoft.Web.Infrastructure允許動態注冊HttpModule,RouteDebugger將格式化的路由調試信息追加(append)到每一個request里。對於.NET3.5和MVC3之前的項目,如果要使用RouteDebugger,還需要在Application_Start中注冊:

?
1
2
3
4
5
protected void Application_Start( object sender, EventArgs e)
{
   RegisterRoutes(RouteTable.Routes);
   RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
}

 

從瀏覽器的輸出我們可以看到詳細的Route匹配信息,當前請求可以成功匹配哪些路由。

注意:{*catchall}路由是RoutDebugger自動添加的,這樣即使沒有任何一個路由匹配成功,也會顯示相應的路由信息,而不是404(不過我本地測試發現非法url還是返回了404,有人在Phil Haack的博客提出了這個問題但是沒有得到回答)。

 

禁用RouteDebugger

當使用了RouteDebugger后,你會發現每一個頁面的后面都會附帶路由信息。如果你需要禁用這個功能,打開Web.config:

將RouteDebugger:Enabled后面的value="false"即可關閉RouteDebugger模式。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM