я думаю, что ваша проблема в том, что вы либо не используете ограничение для определения того, как должно выглядеть местоположение и этап, и оно дает вам ложные срабатывания и читает вещи там, где они не должны, или у вас есть определения вашего маршрута в неправильный заказ
убедитесь, что у вас задан mvc по умолчанию, заданный последним, и если у вас есть несколько пользовательских маршрутов, ограничьте использование регулярного выражения или пользовательского класса ограничений, чтобы определить, какие расположения допустимы, и они должны выглядеть как
например http://site.com/ny/test/server/123456
не является допустимым местоположением - создайте пользовательское ограничение, которое определяет, что
действительное местоположение проверяет его по базе данных или списку действительных
места
- это тест на допустимую стадию - регулярных выражений может быть достаточно, но я всегда стараюсь избегать регулярных выражений, когда это возможно, поскольку это зло и его трудно поддерживать. Опять же, я бы написал собственное ограничение, чтобы определить, какие этапы действительны. Вероятно, проверка по списку достаточна, так как у вас не должно быть очень много этапов.
Также следует отметить, что при использовании этапов в том виде, в котором вы находитесь в своем URL, вы также можете добавить правила проверки подлинности в ограничение, чтобы, например, исключать только тех людей, которые ... скажем .. роли администратора или заинтересованных сторон сопоставляются с маршрутом и регулярно или не проходят проверку подлинности пользователи могут просто перейти к следующему маршруту или могут просто дать 404
Написание маршрутов может быть сложным, поэтому рекомендуется максимально ограничить ваши входные данные, особенно если вы принимаете строковые данные
Стивен Уолтер имеет хороший пост по написанию ограничения маршрута в своем блоге