ASP.NET MVC Default route?

Edoardo picture Edoardo · Jun 10, 2009 · Viewed 58.9k times · Source

I created a new ASP.NET MVC project and implemented a site authorization filter.

When I map the routes to the {controller}/{action} pair, I pass a role = "SomeRole" default to the route.

It works perfectly if I go through the full url (http://localhost/somecontroller/someaction) and I specified the full route

MapRoute("SomeAction", "somecontroller/someaction",
 new { controller = "SomeController", action = "SomeAction", role = "SomeRole");

The problem is that when somebody visits http://thesiteaddress.com there has to be a default route that invokes /home/index instead of / and if I specify

MapRoute("Default", new { controller="somecontroller",action="action" });

then I lose the role="SomeRole" from the previous MapRoute.

How can I solve this?

Answer

George Stocker picture George Stocker · Jun 10, 2009

Make sure the Default route is at the BOTTOM of your listed route table. Order matters when it comes to ASP.NET MVC Routing tables.

The correct ordering is your 'most specific' route to your least specific route.