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?
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.