Заказ только, кажется, соблюдается внутри контроллера: когда следующие методы определены в одном контроллере, я получаю ожидаемое поведение, то есть Method1
имеет приоритет , Method2
никогда не вызывается.ASP.NET MVC 5: Определить порядок маршрута между контроллерами (RouteAttribute)
[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.
Можно ли определить порядок между контроллерами с использованием атрибута маршрутизации?
Edit 1: Кажется, что даже маршруты, которые имеют неявный порядок в пределах одного контроллера неоднозначны, когда распространяется на несколько контроллеров. Внутри одного контроллера (буквально перед подстановочным знаком) было бы нормально работать, но выбрасывает исключение, если оно помещается в разные контроллеры.
[Route("details/abc")]
[Route("details/{product}")]
Это делает меня, что дизайн держать контроллеры сфокусированные и заставить подобные маршруты, которые будут определены в том же контроллере.
Edit 2:
Эти маршруты я на самом деле хотите использовать. Я хочу поместить их в разные контроллеры, потому что они делают разные вещи. Они отличаются префиксом.
[Route("reactive/monitor")]
[Route("{tier}/monitor")]
Ваша попытка решить проблему заказа на нескольких контроллерах является странной. Тот же маршрут может существовать в двух контроллерах и иметь два совершенно законных URI без какой-либо жалобы от .Net или потребителя услуги. Можете ли вы объяснить нам, какую проблему с кросс-контроллером вы пытаетесь исправить? –