Убедитесь, что Маршрут по умолчанию
находится в НИЖНЕМ вашей указанной таблице маршрутов. Порядок имеет значение, когда дело доходит до таблиц маршрутизации ASP.NET MVC.
Правильный порядок - это ваш «наиболее конкретный» маршрут до наименее конкретного.
Если вы не указываете имя маршрута или действие определяется с помощью HTTP-запроса, оно будет выглядеть в порядке, в котором они были добавлены. В первый раз, когда он находит подходящий, он останавливается. Так что, вероятно, происходит совпадение предыдущего с тем, что вы добавили.
Фил Хаак выпустил инструмент отладки маршрутов, который может оказаться неоценимым в понимании подобных проблем.
С помощью этого инструмента вы можете увидеть, как ваше приложение MVC анализирует URL-адрес и сопоставляет его с вашим RouteTable.
На самом деле Джордж прав . MVC Routing соблюдает маршрут заказа. Ваш последний маршрут должен быть как можно более общим, а предыдущий - как можно более конкретным.
В вашем случае оба являются общими. Вы должны
MapRoute("SomeAction", "Post/{action}", new {controller = "Post", role = "User");
, а затем
MapRoute("Default", new {controller="Home", action="Index", role = "Anonymous"});
, чтобы указать специфичность для обоих маршрутов.