Here is a quick way of getting detailed information about which route has been accepted and why in MVC.NET.
The code below should be placed in your Application_EndRequest event handler in global.asax. By placing a break point in the code directly after evaluation you can see a collection of all the routes, if it matched the request and a reference to the RouteData to see more detailed information.
This code works by re-evaluating each of the Routes defined in your application against the current request. The first match in the collection is the match that MVC will have used to handle your request.
List<object> routes = new List<object>();
foreach (System.Web.Routing.Route current in System.Web.Routing.RouteTable.Routes) {
System.Web.Routing.RouteData data = current.GetRouteData(
new HttpContextWrapper(HttpContext.Current)
);
bool matches = data != null;
routes.Add(new { Match=matches, Url=current.Url.ToString(), Data=data});
}
For a better long term implementation try using Phil Haack’s debugging implementation or get the route debugging code from the ASP.NET MVC Unleashed book.