Пользовательский маршрут в данный момент перехватывает слишком много
Ваше исключение говорит только о том, что ваш пользовательский маршрут перехватывает то, что вы не собирались перехватить. Так что если будет запрос к корневому URL вашего приложения:
http://localhost/Website
Ваш пользовательский маршрут поймает его. И установите его по умолчанию. И назови свое CaseController.Advance()
действие. И, конечно, выведите исключение, потому что id
не определено.
Держите ваш собственный маршрут перед маршрутом по умолчанию
Но вам придется изменить свой пользовательский маршрут или добавить к нему ограничения маршрута, чтобы он фактически перехватывал только те запросы, которые он должен перехватить.
Но какое изменение вы должны сделать? Если нужен только один контроллер, то измените его на:
routes.MapRoute(
"CaseAdvance",
"Case/{action}/{id}/{step}",
new { controller = "Case", action = "Advance", id = "", step = StepType.Refer});
Если есть другие контроллеры, вы можете оставить их как есть, просто добавьте ограничения:
routes.MapRoute(
"CaseAdvance",
"{controller}/{action}/{id}/{step}",
new { controller = "Case", action = "Advance", id = "", step = StepType.Refer},
new { controller = "Case|Other" });
Если может быть любой контроллер, вы можете указать, чтобы ваш идентификатор был числовым:
routes.MapRoute(
"CaseAdvance",
"{controller}/{action}/{id}/{step}",
new { controller = "Case", action = "Advance", id = "", step = StepType.Refer},
new { id = @"\d+" })
В этом случае этот маршрут будет перехватывать только те запросы, для которых фактически определен идентификатор. Как число конечно.
Вы будете знать, какой из них подходит вам лучше всего.