Кажется, что порядок RouteAttribute("abc", Order = 2)
соблюдается только внутри контроллера: когда следующие методы определены в одном контроллере, я получаю ожидаемое поведение, то есть Method1
имеет приоритет, Method2
никогда не вызывается.
[Route("abc", Order = 1)]
public ActionResult Method1() { ... }
[Route("abc", Order = 2)]
public ActionResult Method2() { ... }
Если я определяю эти методы в двух отдельных контроллерах, я получаю неоднозначное исключение маршрута: InvalidOperationException: Multiple controller types were found that match the URL. This can happen if attribute routes on multiple controllers match the requested URL.
Можно ли определить порядок между контроллерами, используя маршрутизацию атрибутов?
Редактировать 1: кажется, что даже маршруты, которые имеют неявный порядок в пределах одного контроллера, неоднозначны, когда распространяются на несколько контроллеров. Следующее было бы хорошо в пределах одного контроллера (литерал перед подстановочным знаком), но вызывает исключение, если оно помещено в разные контроллеры.
[Route("details/abc")]
[Route("details/{product}")]
Это заставляет меня думать, что по замыслу контроллеры должны быть сфокусированы и принудительно определять одинаковые маршруты в одном и том же контроллере.
Редактировать 2:
Это маршруты, которые я действительно хочу использовать. Я хочу поместить их в разные контроллеры, потому что они делают разные вещи. Они отличаются префиксом.
[Route("reactive/monitor")]
[Route("{tier}/monitor")]