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

來源:互聯網
上載者:User

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模式。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.