Перенаправление маршрутов основано на записи маршрута в таблице маршрутов. Это должно быть систематически. Например, если у вас есть маршрут как «customurl / id» после {controller} / {action} / {id} (по умолчанию mvc), когда вы введете «customurl» в поле URL-адреса, он примет его в качестве маршрута по умолчанию и не будет страницы найденное исключение произойдет. Поэтому, если вы хотите использовать пользовательский маршрут, сначала удалите маршрут по умолчанию. Я делаю это как.
RouteCollection routes = RouteTable.Routes;
if (routes["rname"] != null)
{
RouteTable.Routes.Remove(routes["rname"]);
}
routes.Remove(routes["Default"]);
routes.MapRoute(
name: "newname",
url: url + "/{customId}",
defaults: new { controller = "Search", action = "Index", customId = UrlParameter.Optional }
);
//default route value
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);